按钮的PerformClick()事件

时间:2010-02-27 06:52:26

标签: c# .net winforms button

我在窗口表单上有一个按钮,我正在调用按钮的 PerformClick() 事件。

现在,如果我将此按钮显示为false,则表示 PerformClick() 事件未执行。

可以吗?如果是,那么我想在表格上隐藏按钮我该怎么办?我已经使按钮的 背景颜色 backcolor 形式相同,但它仍然可见。

如果我使用标签,那么除了改变其可见属性之外,只要使其背景颜色与表单的背景颜色相同并保持文本为null,就可以使其不可见。并且还有标签的click()事件但我没有找到标签的PerformClick()事件。

5 个答案:

答案 0 :(得分:4)

在提出任何事件之前,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!");
}

答案 1 :(得分:1)

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

请参阅this post (similar question)this post (transparent button)

答案 2 :(得分:1)

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

  1. 通过更改其位置属性,将Button移动到Form或其他Container对象的可见区域之外。

  2. 从Form的Controls集合或其他Container对象中删除Button。

  3. 是的,使用这两种技术你可以“带回”Button:在第一种情况下,重新设置Location属性;在第二种情况下,将Button添加回Form或从中删除的其他Container对象(将恢复位置)。

    我认为这两种技术都是“可怕的”:它们是黑客攻击:Josh Einstein上面的回答,我相信它会让你走上正轨。

    你需要解释为什么你说,为了回应Josh的建议你将代码分成“共享方法”:“因为如果我直接调用我从按钮的click()事件中调用的方法,那么它是未处理或未执行“

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

答案 3 :(得分:0)

也许我不理解这个问题,但您可以将按钮设置为false。

button1.Visible = false;

答案 4 :(得分:0)

我有类似的问题,我发现了一种不同的解决方法。 为了帮助其他人:

您可以使用Control(form)方法InvokeOnClick来强制点击Visible = False按钮

this.InvokeOnClick(button1, EventArgs.Empty);

如果您无权访问Form,可以尝试button1.Parent.InvokeOnClick ...

由于 (由Stoitcho Goutsev在其他论坛发表)

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

相关问题