如何把menu的click用代碼指給某button的click事件。
解决方案 »
- 激活 winform 窗口
- 出现尝试读取或写入受保护的内存的错误,是什么原因?
- 用Video播放视频的问题
- 请帮我看下,概念是否正确。
- 如何根据winform控件的名称(字符串),设定其属性,出现错误
- 设置断点的问题
- 请问怎么用script来实现页面之间的form传递啊?
- 请问哪里有英文读数的C#程序?
- 如何在程序中调用SQLConnectionString配置窗体
- 请问如何在窗口创建以后再动态的添加删除sysmenu中的菜单项以及改变其状态? 谢谢.
- DataTable 绑定 DataGridView 删除记录问题 windowForm 程序
- 如何解析C#中的条件表达式,最后得出一Bool变量?????
{
button1_Click(sender, e);
}private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("I'm Button1 Click...");
}
例如:下面是菜单的Click事件:
this.menuItemToolStripMenuItem.Click += new System.EventHandler(this.menuItemToolStripMenuItem_Click);
那么把按钮的Click事件绑定到其上:
this.button1.Click += new System.EventHandler(this.menuItemToolStripMenuItem_Click);
private void menuItemToolStripMenuItem_Click(object sender, EventArgs e)
{
//do something
}
我的button是根據menu下的子菜單動態產生的,這個沒有問題了,
但是我要把子菜單裡的click事件也要給對應的button.
現在這個不知如何弄。
我的代碼如下
private void createButton(ToolStripMenuItem MainItem)
{
int k = 0;
panel2.Controls.Clear();
ToolStripMenuItem item = new ToolStripMenuItem();
for (int i = 0; i < MainItem.DropDownItems.Count; i++)
{
if (MainItem.DropDownItems[i].GetType().ToString() != "System.Windows.Forms.ToolStripMenuItem") continue;
item = (ToolStripMenuItem)menuJXCGL.DropDownItems[i];
if (item.DropDownItems.Count > 0)
{
for (int j = 0; j < item.DropDownItems.Count; j++)
{
Button button = new Button();
button.Name = "Button" + i.ToString();
button.Text = item.DropDownItems[j].Text;
button.Height = 25;
button.Width = 120;
this.panel2.Controls.Add(button);
button.Left = 3;
button.Top = 25 * k;
//button.Click += item.Click();//這裡不知如何弄
b[i] = button;
k++;
}
}
else
{
Button button = new Button();
button.Name = "Button" + i.ToString();
button.Height = 25;
button.Width = 120;
this.panel2.Controls.Add(button);
button.Left = 3;
button.Top = 25 * k;
b[i] = button;
//button.Click += item.Click();這裡不知如何弄 b[i].Text = item.Text;
k++;
}
}
我就是不知要調用哪個方法,我是循環的。我循環到哪就是哪個。
難道沒有辦法了嗎,delphi反正是可以實現。onclikc附給onclick就可以了。
c#好像不能這樣搞。
子菜单的功能是什么,BUTTON的功能是什么?
楼主再说清楚些。
現我我說明白點,開始可能沒說清楚需求。
我的button是根據menu下的子菜單動態產生的,這個沒有問題了,
但是我要把子菜單裡的click事件也要給對應的button.
現在這個不知如何弄。
----------------------------------------------------
按楼主的说法,子菜单menu1的功能是生成一个button1;
menu1的click事件也要给对应的button1,那就是说button1的功能是生成另外一个button2还是生成它自己?
不太明白。
不是你說的這個意思
我加載窗體時,我要根據我的菜單項動態生成一些按鈕,我的按鈕的點擊功能就是菜單的點擊功能。
這樣讓用戶愛點菜單就點菜單愛點按鈕就點按鈕,
不知大家明白我的需求了沒有。
this.button1.Click += (按TAB时间就出来了)
to fantasyzc
如果要用下面的這個
this.button1.Click += new System.EventHandler(this.menuItemToolStripMenuItem_Click);
this.menuItemToolStripMenuItem_Click你事先是知道這個事件。
我用循環的方法我就不知道要調用哪個事件,我隻知道是哪一個菜單了。所以是不行的。我的需求是:
我加載窗體時,我要根據我的菜單項動態生成一些按鈕,我的按鈕的點擊功能就是菜單的點擊功能。
這樣讓用戶愛點菜單就點菜單愛點按鈕就點按鈕,
不懂你的意思,能說明白點嗎?
{
int k = 0;
panel2.Controls.Clear();
for (int i = 0; i < MainItem.DropDownItems.Count; i++)
{
ToolStripMenuItem item = new ToolStripMenuItem();
if (MainItem.DropDownItems[i].GetType().ToString() != "System.Windows.Forms.ToolStripMenuItem") continue;
item = (ToolStripMenuItem)MainItem.DropDownItems[i];
if (item.DropDownItems.Count > 0)
{
for (int j = 0; j < item.DropDownItems.Count; j++)
{
ToolStripMenuItem subItem = new ToolStripMenuItem();
if (item.DropDownItems[j].GetType().ToString() != "System.Windows.Forms.ToolStripMenuItem") continue;
subItem = (ToolStripMenuItem)item.DropDownItems[j];
Button button = new Button();
button.Click += delegate
{
subItem.PerformClick();
};
button.Name = "Button" + i.ToString();
button.Text = subItem.Text;
button.Height = 25;
button.Width = 120;
this.panel2.Controls.Add(button);
button.Left = 3;
button.Top = 25 * k;
button.TextAlign = ContentAlignment.MiddleLeft;
b[i] = button;
k++;
}
}
else
{
Button button = new Button();
button.Click += delegate
{
item.PerformClick();
};
button.Name = "Button" + i.ToString();
button.Height = 25;
button.Width = 120;
this.panel2.Controls.Add(button);
button.Left = 3;
button.Top = 25 * k;
button.TextAlign = ContentAlignment.MiddleLeft;
b[i] = button;
b[i].Text = item.Text;
k++;
}
}