我綁定數據集到datagridview,我想給用戶刪除(可能通過複選框?)列,他不知道看到的可能性。從datagridview動態刪除列
所以,一開始他看到5列,他只想看看三個,所以他點擊了一些東西,這些列消失了。
你用什麼來給用戶這個功能?
我綁定數據集到datagridview,我想給用戶刪除(可能通過複選框?)列,他不知道看到的可能性。從datagridview動態刪除列
所以,一開始他看到5列,他只想看看三個,所以他點擊了一些東西,這些列消失了。
你用什麼來給用戶這個功能?
我相信你可以通過設置特定的列可見標誌爲false來實現這一點。
如果你使用一個複選框,你有這樣的事情:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox c = (CheckBox)sender;
if (c.Checked)
Column1.Visible = true;
else
Column1.Visible = false;
}
你只修改列1名是要顯示/隱藏和事件鏈接到正確的複選框(無論柱ES)。
在表單的構造函數中,我會做類似Checkbox1.checked = true;
的操作,所以第一個_CheckChanged會隱藏它,但這取決於您。
這是相當不錯的,但每列應該有一個複選框,我不會說這些想法與複選框是最好的 – user278618 2010-10-18 20:48:08
真實的,有不同的方式去做;基本上鍊接某種類型的事件(onclick,checkchanged,不管)來隱藏列;只是在這裏給出一個示例代碼 - 沒有看到任何實際的代碼,我不能真正建議任何更特定於某種需求的東西 – Adam 2010-10-18 20:49:52
我建議如下:
創建checkedListBox,並給它添加一個複選框項在網格中的每個列,這是代碼:
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
checkedListBox1.Items.Add(column.HeaderText, column.Visible);
checkedListBox1.ItemCheck += (ss, ee) =>
{
if (checkedListBox1.SelectedItem != null)
{
var selectedItem = checkedListBox1.SelectedItem.ToString();
dataGridView1.Columns[selectedItem].Visible = ee.NewValue == CheckState.Checked;
}
};
}
祝你好運!
我知道這個竅門,因爲它看起來對用戶來說確實很好,所以我想到列標題的複選框(當他點擊它時,列會消失),但我不知道它是否是最好的解決方案 – user278618 2010-10-18 20:38:22
你可以添加一個可以顯示和隱藏的切換檢查菜單項目的菜單,還可以增強菜單項目和上下文菜單。如果您有多個列,我認爲表單上的複選框本身會從UI角度看太多。如果你想到Windows任務管理器,顯示/隱藏列在菜單中。 – pstrjds 2010-10-18 21:00:55