我在同时调用多个按钮时遇到问题,因为每个按钮的工作过程不同,有78个以上的文件夹。
我想在一个名为button4的按钮中同时调用所有按钮。现在它只调用button1而不是button2。
有没有办法同时调用这些按钮?
我的代码是:
private void button4_Click_1(object sender, EventArgs e)
{
button1.PerformClick();
button2.PerformClick();
}
先谢谢。
答案 0 :(得分:4)
您通常不应对其他按钮执行UI样式的点击以调用其行为。
只需调用您想要“点击”按钮的相应事件处理方法即可。
示例代码:
private void button4_Click_1(object sender, EventArgs e)
{
button1_Click_1(null, EventArgs.Empty);
button2_Click_1(null, EventArgs.Empty);
// and so on
}
答案 1 :(得分:3)
你应该重构其他事件来调用命名良好的方法。
假设button1做了一些初始化;它应该是这样的:
private void button1_Click(object sender, EventArgs e)
{
Initialize();
}
说按钮2确定了初始化;它应该是这样的:
private void button2_Click(object sender, EventArgs e)
{
FinalizeInitialization();
}
然后如果button4做了所有这些;它应该是这样的:
private void button4_Click(object sender, EventArgs e)
{
Initialize();
FinalizeInitialization();
WhateverElseButton4ShouldDo();
}
答案 2 :(得分:1)
在大多数情况下,您根本不应该致电PerformClick()
。相反,您应该调用事件处理程序调用的相同方法。因此,如果单击按钮3应该表现为单击按钮1然后按钮2,则应该具有以下代码:
private void button1_Click(object sender, EventArgs e)
{
SomeAction();
}
private void button2_Click(object sender, EventArgs e)
{
AnotherAction();
}
private void button3_Click(object sender, EventArgs e)
{
SomeAction();
AnotherAction();
}
(作为旁注,您的按钮应具有描述性名称,而不是button1
等。)
答案 3 :(得分:0)
我们无法说出那些按钮点击处理程序的功能。所以很难说出错了什么。但请尝试将代码从按钮单击处理程序移开。创建一个包含按钮单击后应运行的代码的类。然后从按钮单击处理程序中调用此类的方法。调试和测试该代码会更容易。
public class ButtonActions
{
public void DoSomething() {...}
public void DoSomething2() {...}
public void DoSomething3() {...}
public void DoAll()
{
DoSomething();
DoSomething2();
DoSomething3();
}
}
// here instead of clicking all buttons call method that does it all
protected void button_Click(object sender, EventArgs e)
{
var buttonActions = new ButtonActions();
buttonActions.DoAll();
}