我有一个form1,有一个“下载”按钮和一个“下一步”按钮 . 默认情况下,“下一步”按钮被禁用 . 当我点击“下载”按钮时,我将从download.cs调用一个方法,不同于form1.cs . 下载后,我希望启用“下一步”按钮,所以在download.cs中,收到所有文件后,我放了
form1.btnNext.Enabled = true;
但它不起作用 . 我也把它放在form1.cs中
public void enableButton(bool enabled)
并在download.cs中我把:
private form1 form1; ... form1.enableButton(true);
但它也不起作用 . 任何人都可以告诉我哪里错了吗?提前致谢 .
6 回答
如果你在下载时冻结你的UI比
1-在Downloader类中定义一个事件
2-将此事件挂钩到form1类中,我假设您正在下载按钮中创建下载类的对象,或者它是在类级别创建的,我们将此对象称为customDownloader
3-在form1类中定义事件处理程序,如下所示 .
4-让我们知道在download.cs文件中有一个downloadfile()方法,所以当你下载完成而不是提出这个事件 .
是的
您的问题需要更多信息才能确定,但我猜测您的下载程序类中的
form1
实例与屏幕上显示的实例不同 .如果您的下载程序应该能够回调启动它的表单,最简单的方法是将对该表单的引用传递给下载程序类 .
我记得面对这样的事情,你可能会尝试让你的(下一个)按钮公共而不是私人,但这不是一个非常可爱的方法,但我想如果你做帽子,那么你的第一个建议将起作用 .
如果没有,你可以尝试这样做:
Form1 myForm = new Form1; myform.nxtButton.enabled = true;
它肯定会奏效
您可以将Button的引用传递给新类 . 因此,当您从download.cs调用该方法时,将按钮的名称作为参数传递,然后您可以像在任何其他引用中一样在新类中使用它 .
你可以通过回调来做到这一点 . 所以在你的Download.cs中,你有这样的东西:
这样,您可以将EnableButton方法传递给下载方法 .
您需要在
Form2
中引用Form1
. 是Form2
一个对话窗口,MDI子窗口等?将Form1
设置为父窗口?Form1
打开Form2
?如果
Form1
确实打开了Form2
,则可以将owner属性设置为在Form2
内引用Form1
. 此外,请确保Form1
中的button10
设置为PUBLIC(默认情况下为私有) .在
Form1
中,您将拥有以下代码:在
Form2
中,只要您想在Form1
上访问button10
,请执行以下操作: