我绑定数据集到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