C# 利用动态加载菜单、子菜单方式 换肤

.Net技术 码拜 8年前 (2017-04-18) 1303次浏览
 C# 利用动态加载菜单、子菜单方式 换肤
动态加载菜单、子菜单的方式本人已经搞定
最后一个问题是换肤问题:
本人想通过点击某皮肤子菜单的时候换皮肤,但是一直都没办法通过点击子菜单的时候获取子菜单的Text属性(原因是Text属性正是皮肤的名字。)

public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//添加菜单一
subItem = AddContextMenu(“皮肤”, menuStrip1.Items, null);
//添加子菜单
foreach (SkinContainer MyStyle in SkinManager.Default.Skins)
{
AddContextMenu(MyStyle.SkinName, subItem.DropDownItems, new EventHandler(MenuClicked));
}
}
//添加子菜单Text属性
private ToolStripMenuItem AddContextMenu(string text,ToolStripItemCollection cms,EventHandler callback)
{
if(text == “-“)
{
ToolStripSeparator tsp = new ToolStripSeparator();
cms.Add(tsp);
return null;
}
else if (!string.IsNullOrEmpty(text))
{
ToolStripMenuItem tsmi = new ToolStripMenuItem(text);
tsmi.Tag = text + “TAG”;
if (callback != null) tsmi.Click += callback;
cms.Add(tsmi);
return tsmi;
}
return null;
}
 //响应点击子菜单事件,但是以下内容都是错误的,无法获取子菜单Text属性,更加没办法换肤。
void MenuClicked(object sender,EventArgs e)
{
ToolStripItem[] Skin = this.menuStrip1.Items.Find(menuStrip1.Name, true);
string SkinName = Skin.ToString();
DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = SkinName;

}

解决方案

20

  void MenuClicked(object sender,EventArgs e)
{
//使用  (sender as ToolStripMenuItem).Text;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 利用动态加载菜单、子菜单方式 换肤
喜欢 (0)
[1034331897@qq.com]
分享 (0)