如何使列容易可见?
How can make columns visible easly?
我的项目有一个包含 52 列的 DataGridView,其中一些列不可见。但我希望用户能够轻松地看到它们。所以我添加了一个按钮,如下图所示。这使五列可见。
但是滚动时出现问题,这个按钮在表单上保持静态。我希望此按钮锚定到特定列 header。可随列 header.
移动
所以我尝试将 DataGridView 和 Button 控件放在与 children 相同的面板上。这是可行的,但面板滚动的功能不如 DataGridView 的滚动。例如,在面板中滚动冻结的列不起作用。
有什么解决办法吗?我希望用户像 Excel 一样轻松地使列可见或不可见。没有必要使用按钮。 İ如果还有其他选择,我很感兴趣。
我将展示一个示例,说明如何使用上下文菜单显示和隐藏 DataGridView 列。
向表单添加菜单:
ContextMenuStrip columnMenu;
像这样创建菜单。每列都有一个带有复选框的菜单项。
当然也可以在设计器中手动创建和填写。
private void Form1_Load(object sender, EventArgs e)
{
columnMenu = new ContextMenuStrip();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
var item = new ToolStripMenuItem();
item.Text = column.Name;
item.CheckOnClick = true;
item.Checked = true;
item.Click += Item_Click;
columnMenu.Items.Add(item);
}
}
当您 select 一个菜单项时,显示或隐藏该列。
private void Item_Click(object sender, EventArgs e)
{
var item = (ToolStripMenuItem)sender;
dataGridView.Columns[item.Text].Visible = item.Checked;
}
订阅事件的 DataGridView:
dataGridView.ColumnHeaderMouseClick += DataGridView_ColumnHeaderMouseClick;
在此事件处理程序中,显示菜单。
private void DataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
columnMenu.Show(MousePosition);
}
我的项目有一个包含 52 列的 DataGridView,其中一些列不可见。但我希望用户能够轻松地看到它们。所以我添加了一个按钮,如下图所示。这使五列可见。
但是滚动时出现问题,这个按钮在表单上保持静态。我希望此按钮锚定到特定列 header。可随列 header.
移动所以我尝试将 DataGridView 和 Button 控件放在与 children 相同的面板上。这是可行的,但面板滚动的功能不如 DataGridView 的滚动。例如,在面板中滚动冻结的列不起作用。
有什么解决办法吗?我希望用户像 Excel 一样轻松地使列可见或不可见。没有必要使用按钮。 İ如果还有其他选择,我很感兴趣。
我将展示一个示例,说明如何使用上下文菜单显示和隐藏 DataGridView 列。
向表单添加菜单:
ContextMenuStrip columnMenu;
像这样创建菜单。每列都有一个带有复选框的菜单项。
当然也可以在设计器中手动创建和填写。
private void Form1_Load(object sender, EventArgs e)
{
columnMenu = new ContextMenuStrip();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
var item = new ToolStripMenuItem();
item.Text = column.Name;
item.CheckOnClick = true;
item.Checked = true;
item.Click += Item_Click;
columnMenu.Items.Add(item);
}
}
当您 select 一个菜单项时,显示或隐藏该列。
private void Item_Click(object sender, EventArgs e)
{
var item = (ToolStripMenuItem)sender;
dataGridView.Columns[item.Text].Visible = item.Checked;
}
订阅事件的 DataGridView:
dataGridView.ColumnHeaderMouseClick += DataGridView_ColumnHeaderMouseClick;
在此事件处理程序中,显示菜单。
private void DataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
columnMenu.Show(MousePosition);
}