ContextMenuStrip on close - C#
Формулировка задачи:
Пытаюсь сделать контекстное меню для datagridview, чтобы можно было скрывать столбцы. Не могу получить актуальное состояние отмеченных элементов по закрытию меню.
Выдает предыдущее состояние.
ContextMenuStrip dgvmenu = new ContextMenuStrip();
// код
public Form1()
{
dgvmenu.Closed += dgvmenu_Closed;
}
//код
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
comboBox_sort.Items.Add(column.HeaderText);
ToolStripMenuItem i = new ToolStripMenuItem();
i.CheckOnClick=true;
i.Text = column.HeaderText;
i.Checked = true;
dgvmenu.Items.Add(i);
}
//код
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
int currentMouseOverRow = dataGridView1.HitTest(e.X, e.Y).RowIndex;
dgvmenu.Show(dataGridView1, new Point(e.X, e.Y));
}
}
// код
private void dgvmenu_Closed(Object sender, ToolStripDropDownClosedEventArgs e)
{
label1.Text = "";
foreach (ToolStripMenuItem i in dgvmenu.Items)
{
label1.Text += i.Checked.ToString() + " ";
}
}Решение задачи: «ContextMenuStrip on close»
textual
Листинг программы
label1.Text = "";
foreach (ToolStripMenuItem i in dgvmenu.Items)
{
label1.Text += i.Checked.ToString() + " ";
}