Posted 12 December 2021, 7:53 pm EST
The sample doesn’t exactly do what i want. I modified it as follow
even to add
c1Flex.ColumnContextMenuOpening += Flex_ColumnContextMenuOpening;
private void Flex_ColumnContextMenuOpening(object sender, ColumnContextMenuOpeningEventArgs e)
{
// cheked if the top-left header cell was clicked
var flex = (C1FlexGrid)sender;
if (e.Col == 0 && flex.Rows.Fixed >= 1 && flex.Cols.Fixed >= 1)
{
e.ContextMenuStrip.Items.Clear();
for (int i = 1; i < flex.Cols.Count; i++)
{
var item = new ToolStripMenuItem();
item.CheckOnClick = true;
item.Checked = flex.Cols[i].Visible;
item.Tag = i;
item.Click += Flex_ContextMenu_Click;
for (int r = 0; r < flex.Rows.Fixed; r++) if (!item.Text.Contains(flex.Rows[r][i].ToString())) item.Text = item.Text += @" " + flex.Rows[r][i];
e.ContextMenuStrip.Items.Add(item);
}
}
}
private void Flex_ContextMenu_Click(object sender, EventArgs e)
{
ContextMenuChanged(c1Flex,sender);
}
private new void ContextMenuChanged(C1FlexGrid flex, object menuItem)
{
if (menuItem is ToolStripMenuItem { Tag: { } } btn)
{
flex.Cols[(int)btn.Tag].Visible = btn.Checked;
}
}