Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按钮的PerformClick()事件_C#_.net_Winforms_Button - Fatal编程技术网

C# 按钮的PerformClick()事件

C# 按钮的PerformClick()事件,c#,.net,winforms,button,C#,.net,Winforms,Button,我在窗口窗体上有一个按钮,还有一个方法调用button的PerformClick()事件 现在,如果我将此按钮设置为false,则不会执行PerformClick()事件 可以吗?如果是,那么我想让表单上的按钮不可见,我该怎么做?我已经使按钮的背景色与表单背景色相同,但它仍然可见 如果我使用标签,那么除了更改其visible属性外,还可以使其不可见,只需使其背景色与表单的背景色相同,并保持文本为空即可。此外,还有标签的click()事件,但我找不到PerformClick()标签的事件。在引发任

我在窗口窗体上有一个按钮,还有一个方法调用button的PerformClick()事件

现在,如果我将此按钮设置为false,则不会执行PerformClick()事件

可以吗?如果是,那么我想让表单上的按钮不可见,我该怎么做?我已经使按钮的背景色与表单背景色相同,但它仍然可见


如果我使用标签,那么除了更改其visible属性外,还可以使其不可见,只需使其背景色与表单的背景色相同,并保持文本为空即可。此外,还有标签的click()事件,但我找不到PerformClick()标签的事件。

在引发任何事件之前,PerformClick会专门检查按钮是否“可用”。这样,当按钮被禁用、隐藏等时,您就不必添加额外的保护代码

与其在按钮上调用PerformClick方法,不如将按钮的Click事件处理程序中的代码放入一个方法中,然后从两个位置调用该方法

private void button1_Click(object sender, EventArgs e) {
    DoSomething();
}

private void menu_Click(object sender, EventArgs e) {
    DoSomething();
}

private void DoSomething() {
    MessageBox.Show("Something done!");
}

PerformClick会在引发任何事件之前专门检查按钮是否“可用”。这样,当按钮被禁用、隐藏等时,您就不必添加额外的保护代码

与其在按钮上调用PerformClick方法,不如将按钮的Click事件处理程序中的代码放入一个方法中,然后从两个位置调用该方法

private void button1_Click(object sender, EventArgs e) {
    DoSomething();
}

private void menu_Click(object sender, EventArgs e) {
    DoSomething();
}

private void DoSomething() {
    MessageBox.Show("Something done!");
}

也许我不理解这个问题,但是你可以把按钮设置为false

button1.Visible = false;

也许我不理解这个问题,但是你可以把按钮设置为false

button1.Visible = false;

我不确定我是否理解你的问题,但以下是一些可能会给你答案的帖子:


请参阅和

我不确定是否理解您的问题,但以下是一些可能会给您答案的帖子:


请参见和

有两种方法可以有效地使按钮不可见,但仍然可以调用其PerformClick()事件:

  • 通过更改按钮的“位置”属性,将按钮移动到窗体或其所在的其他容器对象的可见区域之外

  • 从窗体或其所在的其他容器对象的控件集合中删除该按钮

  • 是的,使用这两种技术,您可以“带回”按钮:在第一种情况下,通过重新设置Location属性;在第二种情况下,将按钮添加回表单或从中删除它的其他容器对象(这将恢复位置)

    我相信这两种技术都是“可怕的”:它们都是黑客:上面乔希·爱因斯坦的答案,我相信是把你带上了正确的轨道


    我想你需要解释一下为什么你说,为了回应Josh的建议,你把代码分成了一个“共享方法”:“因为如果我直接调用我在按钮的click()事件中调用的方法,它不会被处理或执行”


    直接调用该方法时,为什么不“处理”或“执行”该方法?

    有两种方法可以有效地使按钮不可见,但仍然能够调用其PerformClick()事件:

  • 通过更改按钮的“位置”属性,将按钮移动到窗体或其所在的其他容器对象的可见区域之外

  • 从窗体或其所在的其他容器对象的控件集合中删除该按钮

  • 是的,使用这两种技术,您可以“带回”按钮:在第一种情况下,通过重新设置Location属性;在第二种情况下,将按钮添加回表单或从中删除它的其他容器对象(这将恢复位置)

    我相信这两种技术都是“可怕的”:它们都是黑客:上面乔希·爱因斯坦的答案,我相信是把你带上了正确的轨道


    我想你需要解释一下为什么你说,为了回应Josh的建议,你把代码分成了一个“共享方法”:“因为如果我直接调用我在按钮的click()事件中调用的方法,它不会被处理或执行”


    当您直接调用该方法时,为什么不“处理”或“执行”该方法?

    我遇到了类似的问题,我找到了一种不同的解决方法。 为了帮助这里的其他人:

    您可以使用控件(表单)方法InvokeOnClick强制单击Visible=False按钮

    this.InvokeOnClick(button1, EventArgs.Empty);
    
    如果您无权访问表单,可以尝试button1.Parent.InvokeOnClick

    谢谢 (斯托伊科·古采夫在其他论坛发表)


    Raffaeu提醒我“control.InvokeOnClick是一种受保护的方法”

    我遇到了类似的问题,我找到了一种不同的解决方法。 为了帮助这里的其他人:

    您可以使用控件(表单)方法InvokeOnClick强制单击Visible=False按钮

    this.InvokeOnClick(button1, EventArgs.Empty);
    
    如果您无权访问表单,可以尝试button1.Parent.InvokeOnClick

    谢谢 (斯托伊科·古采夫在其他论坛发表)


    Raffaeu提醒我“control.InvokeOnClick是一个受保护的方法”

    你能给出它的代码吗…-1我和其他人一样不理解这个问题。请提供so代码。你能给出它的代码吗…-1我和其他人一样不理解这个问题。请提供so代码。如果我将按钮设置为可见false,则不会执行按钮的performclick()事件,这就是问题所在。如果我将按钮设置为可见false,则不会执行按钮的performclick()事件,这就是问题所在。因为如果我直接调用从按钮的click()调用的方法事件未处理或未执行..因为如果我直接调用从按钮的click()事件调用的方法,则该方法未处理或未执行..这是一个很好的建议,它很有效,只是您忘了提到该控件。InvokeOnClick是一个受保护的方法这是一个很好的建议,它很有效,除了