//所存文件路径
private static string Path = Application.StartupPath + "//GridLayOutConfig//";
/// <summary>
/// 自定义右击菜单项
/// </summary>
/// <param name="gridView"></param>
/// <param name="fileName"></param>
public static void ResotreOptionMenu(GridView gridView, string fileName)
{
if (!string.IsNullOrEmpty(fileName))
gridView.Tag = Path + fileName + "ORG";
gridView.ShowGridMenu += new GridMenuEventHandler(GridMenuShowAddInChinese); //追加ShowGridMenu事件
}
/// <summary>
/// 改写ShowGridMenu事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected static void GridMenuShowAddInChinese(object sender, GridMenuEventArgs e)
{
if (e.MenuType == GridMenuType.Column && (e.HitInfo.InGroupPanel || e.HitInfo.InFilterPanel))
{
e.Allow = false;
return;
}
GridViewMenu temp = e.Menu;
if (e.MenuType == GridMenuType.Column)
{
if (e.HitInfo.Column == null)
return;
e.Menu.Items[0].Caption = "降序排列";
e.Menu.Items[1].Caption = "升序排列";
e.Menu.Items[2].Caption = "清除排序";
e.Menu.Items[3].Caption = "按此列分组";
e.Menu.Items[4].Caption = e.Menu.View.OptionsView.ShowGroupPanel ? "隐藏分组面板" : "显示分组面板";
e.Menu.Items[5].Caption = "移除此列";
e.Menu.Items[6].Caption = "选择列";
e.Menu.Items[7].Caption = "列宽自动调整";
e.Menu.Items[8].Caption = "列宽自动调整(所有)";
e.Menu.Items[9].Caption = "过滤设置";
DXMenuItem dxMenuItem = null;
if (e.Menu.View.Tag != null)
{
dxMenuItem = new DXMenuItem("恢复原有样式");
dxMenuItem.Click += new EventHandler(delegate(object sd, EventArgs ce)
{
string orgPath = e.Menu.View.Tag.ToString();
if (File.Exists(orgPath))
{
e.Menu.View.RestoreLayoutFromXml(orgPath, OptionsLayoutBase.FullLayout);
}
});
e.Menu.Items.Add(dxMenuItem);
}
dxMenuItem = new DXMenuItem(temp.View.GroupFooterShowMode == GroupFooterShowMode.Hidden ? "显示组页脚" : "隐藏组页脚");
dxMenuItem.Click += new EventHandler(delegate(object sd, EventArgs ce)
{
if (temp.View.GroupFooterShowMode == GroupFooterShowMode.Hidden)
temp.View.GroupFooterShowMode = GroupFooterShowMode.VisibleIfExpanded;
else
temp.View.GroupFooterShowMode = GroupFooterShowMode.Hidden;
});
e.Menu.Items.Add(dxMenuItem);
dxMenuItem = new DXMenuItem("导出Excel");
dxMenuItem.Click += new EventHandler(delegate(object sd, EventArgs ce)
{
SaveFileDialog save = new SaveFileDialog();
save.Title = "导出Excel";
save.Filter = "Excel文件(*.xls)|*.xls";
if (save.ShowDialog() == DialogResult.OK)
{
(sender as DevExpress.XtraGrid.Views.Grid.GridView).ExportToExcelOld(save.FileName);
}
});
e.Menu.Items.Add(dxMenuItem);
}
else if (e.MenuType == GridMenuType.Group)
{
e.Menu.Items[0].Caption = "全部展开";
e.Menu.Items[1].Caption = "全部折叠";
e.Menu.Items[2].Caption = "清除分组";
e.Menu.Items[3].Caption = "隐藏面板";
}
else if (e.MenuType == GridMenuType.Summary)
{
e.Menu.Items[0].Caption = "和";
e.Menu.Items[1].Caption = "最小值";
e.Menu.Items[2].Caption = "最大值";
e.Menu.Items[3].Caption = "数量";
e.Menu.Items[4].Caption = "平均值";
e.Menu.Items[5].Caption = "无";
DXMenuItem dxMenuItem = new DXMenuItem("隐藏");
dxMenuItem.Click += new EventHandler(delegate(object sd, EventArgs ce)
{
temp.View.GroupFooterShowMode = GroupFooterShowMode.Hidden;
});
e.Menu.Items.Add(dxMenuItem);
}
}
/// <summary>
/// 简单的汉化GridView
/// </summary>
/// <param name="gridView"></param>
public static void ResotreOptionMenu(GridView gridView)
{
gridView.ShowGridMenu += new GridMenuEventHandler(GridMenuShowInChinese);
}
/// <summary>
/// 改写ShowGridMenu事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected static void GridMenuShowInChinese(object sender, GridMenuEventArgs e)
{
if (e.MenuType == GridMenuType.Column && (e.HitInfo.InGroupPanel || e.HitInfo.InFilterPanel))
{
e.Allow = false;
return;
}
GridViewMenu temp = e.Menu;
if (e.MenuType == GridMenuType.Column)
{
if (e.HitInfo.Column == null)
return;
e.Menu.Items[0].Caption = "降序排列";
e.Menu.Items[1].Caption = "升序排列";
e.Menu.Items[2].Caption = "清除排序";
e.Menu.Items[3].Caption = "按此列分组";
e.Menu.Items[4].Caption = e.Menu.View.OptionsView.ShowGroupPanel ? "隐藏分组面板" : "显示分组面板";
e.Menu.Items[5].Caption = "移除此列";
e.Menu.Items[6].Caption = "选择列";
e.Menu.Items[7].Caption = "列宽自动调整";
e.Menu.Items[8].Caption = "列宽自动调整(所有)";
e.Menu.Items[9].Caption = "过滤设置";
}
else if (e.MenuType == GridMenuType.Group)
{
e.Menu.Items[0].Caption = "全部展开";
e.Menu.Items[1].Caption = "全部折叠";
e.Menu.Items[2].Caption = "清除分组";
e.Menu.Items[3].Caption = "隐藏面板";
}
else if (e.MenuType == GridMenuType.Summary)
{
e.Menu.Items[0].Caption = "和";
e.Menu.Items[1].Caption = "最小值";
e.Menu.Items[2].Caption = "最大值";
e.Menu.Items[3].Caption = "数量";
e.Menu.Items[4].Caption = "平均值";
e.Menu.Items[5].Caption = "无";
}
}
该博客介绍了如何在C#中使用DevExpress的GridControl自定义汉化右键菜单项,包括在不同类型的菜单(如列、组、总计)中更改菜单项的显示文字,并添加了导出Excel的功能。
714

被折叠的 条评论
为什么被折叠?



