C# 动态添加2级下拉菜单问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 动态添加2级下拉菜单问题相关的知识,希望对你有一定的参考价值。
代码如下:
private void MenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
try
string cmdText1 = " SELECT PRO_ID,PRO_NM,PRO_TYPE,PRO_NO,USE_YN FROM WMS_PROMENU ";
SqlConnection myConn = new SqlConnection(global::KHS.WMS.APP.Properties.Settings.Default.conStr);
SqlDataAdapter adapter1 = new SqlDataAdapter(cmdText1, myConn);
DataSet ds1 = new DataSet();
adapter1.Fill(ds1);
((System.Windows.Forms.ToolStripDropDownItem)(e.ClickedItem)).DropDownItems.Clear();
foreach (DataRow dr1 in ds1.Tables[0].Select("PRO_TYPE='" + e.ClickedItem.Name + "'AND USE_YN ='1' "))
ToolStripMenuItem mi = new ToolStripMenuItem();
mi.Text = dr1["PRO_NM"].ToString();
mi.Name = dr1["PRO_ID"].ToString();
mi.Tag = dr1["PRO_TYPE"].ToString();
mi.Click += new EventHandler(inItem_Click);
((System.Windows.Forms.ToolStripDropDownItem)(e.ClickedItem)).DropDownItems.Add(mi);
addFixMenu();
catch
为什么每次我执行这段程序的时候第一个按钮的点击事件没事,而点击第二个按钮的话,ToolStripDropDownItem的位置却跑到了程序的最左上角处了。该怎么解决啊?
在这里有没有动态设定ToolStripDropDownItem显示的位置啊?
解决element生成的下拉菜单,不在父级之下,而是在body之下,通过父级控制该下拉菜单的样式,达到不跟别的地方冲突的目的
项目中存在多个下拉菜单,每个下拉菜单的样式可能不同
不能直接拿到element里面的类名来修改,这样会导致全局统一
在下拉菜单上定义一个父级类名,通过这个父级类名来定义这些下拉菜单的样式,达到私有化
遇到问题,生成的下拉菜单跟父类不在同一个节点,无法通过父级类来指定样式
解决方案:在下拉菜单的结构上添加 ref,页面加载后动态添加父级类名
以上是关于C# 动态添加2级下拉菜单问题的主要内容,如果未能解决你的问题,请参考以下文章
解决element生成的下拉菜单,不在父级之下,而是在body之下,通过父级控制该下拉菜单的样式,达到不跟别的地方冲突的目的