Hello,
I'm trying to add custom menu item to the header cells context menu but i have weird display when i am using derived class instead of RadMenuItem class directly (see attached image).
Can you explain to me what is wrong with my code ?
public
class
CustomOpMenuItem : RadMenuItem
{
private
MyForm _form;
private
int
_columnIndex;
private
CustomOp _op;
public
CustomOpMenuItem (MyForm form,
int
columnIndex, CustomOp op)
{
_op = op;
switch
(_op)
{
case
CustomOp.CUSTOM1:
this
.Text =
"Custom 1"
;
break
;
case
CustomOp.CUSTOM2:
this
.Text =
"Custom 2"
;
break
;
case
CustomOp.CUSTOM3:
this
.Text =
"Custom 3"
;
break
;
}
_columnIndex = columnIndex;
_form = form;
this
.Click += onClick;
}
private
void
onClick(
object
sender, EventArgs e)
{
_form.DoCustomOp(_columnIndex,_op);
}
}
private
void
onContextMenuOpening(
object
sender, VirtualGridContextMenuOpeningEventArgs e)
{
for
(
int
i = 0; i < e.ContextMenu.Items.Count; i++)
{
if
(e.ContextMenu.Items[i].Text ==
"Pinned state"
)
{
// hide the Delete option from the context menu
e.ContextMenu.Items[i].Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
if
(i != 0)
{
// hide the separator before the Delete option
e.ContextMenu.Items[i - 1].Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
}
}
}
if
(e.RowIndex == RadVirtualGrid.HeaderRowIndex)
{
RadMenuSeparatorItem separator =
new
RadMenuSeparatorItem();
e.ContextMenu.Items.Add(separator);
RadMenuItem customMenuItem =
new
RadMenuItem();
customMenuItem.Text =
"Custom Data Operation"
;
e.ContextMenu.Items.Add(customMenuItem);
e.ContextMenu.Items.Add(separator);
e.ContextMenu.Items.Add(
new
CustomOpMenuItem(
this
, e.ColumnIndex, CustomOp.CUSTOM2));
e.ContextMenu.Items.Add(separator);
e.ContextMenu.Items.Add(
new
CustomOpMenuItem(
this
, e.ColumnIndex, CustomOp.CUSTOM3));
}
}
Regards.