我有2个表格。我想在加载另一个表单时检查单选按钮(按钮是第二种形式)。我试过了
OnLoad(radioButton2.Checked)
但它没有奏效。有什么想法吗?
答案 0 :(得分:1)
您只需将someRadioButton.Checked
设为true
即可
等待OnLoad
毫无意义。
如果由于某种原因,您确实要等待Load
事件,则需要为事件添加处理程序并将代码放入处理程序中。
答案 1 :(得分:1)
如果我理解正确,你的某个表格上有一个单选按钮(我们可以将其称为form1
,以便我们可以区分它),并希望在加载另一个表单时更改它(我会在此处称为form2
)。
您需要记住以下几点:
form1
访问该按钮。如果两个表单都是同一个项目的一部分(我猜是这样),那么您需要确保该按钮是protected internal
,internal
或public
之一。form1
实际上是一个类;但是屏幕上显示的表单不是form1
类本身:它是类的实例。您将需要引用到该实例。.
(点)运算符。例如,如果您的form1
实例名为myForm1
,那么您需要输入myForm1.radioButton2
来引用单选按钮。省略对象引用时,它默认为当前对象(即代码正在执行的对象)。因此,当您为form1
键入代码时,您可以省略该引用,但要从form2
访问它,您需要它(否则,编译器会认为您正在尝试访问名为“radioButton2”的内容)在form2
内,可能甚至不存在。)Checked
是属性(更具体地说,是bool
属性):您可以获取或设置属性的值,但是可以引用属性用它做任何事情通常都是毫无意义的,在大多数情况下甚至都不会编译。void
的函数,它接受一些参数(object
和EventArgs
或它的一些子类。注册处理程序可以通过programaticaly完成,但你最好从设计师那里做到这一点。要创建和注册事件处理程序,请按照下列步骤操作:
5.1。在设计器上选择表单,然后转到“属性”窗口。
5.2。切换到事件视图(小闪电图标)
5.3。找到您要处理的事件。在这种情况下,OnLoad
,然后双击它。
5.4。瞧!设计人员为您的新事件处理程序创建了一个方法存根,为事件注册了它,并将您发送到代码视图中,以便您可以填写它。所以,假设您有对form1
实例的引用(我很快就会进入),要标记单选按钮,您需要这样的语句:
myForm1.radioButton2.Checked = true;
这会将Checked
类的radioButton2
实例中包含的myForm1
控件的form1
属性设置为true
;这有效地使单选按钮显示为已检查。
现在,到了多汁的部分:如何获得对表单的引用?这取决于您(或代表您的IDE)如何创建它。
如果form1
是应用程序的启动形式,并且您坚持在Visual Studio中执行操作的默认方式,那么请查看Studio为您的项目创建的Program
类。那里应该有一个名为Main
的函数。在某些时候,你会看到类似于这样的一行:
Application.Run(new form1());
new form1()
部分会创建一个form1
的新实例,并将其传递给Application.Run()
(现在不要太烦扰这个调用的内容,我们只对参考)。问题是引用是动态使用而不是保存,但我们可以解决这个问题:在Program
类之外的Main
上添加类似的内容:
internal static form1 myForm1;
然后用这两行代替Application.Run()
来电:
myForm1 = new form1();
Application.Run(myForm1);
调用将执行相同的操作,但通过将其分解为两个步骤,我们可以将引用保存到静态字段myForm1
。
现在,您可以在程序的任何位置使用Program.myForm1
来引用该表单。因此,在form2
中的OnLoad事件处理程序中,您需要做的就是:
Program.myForm1.radioButton2.Checked = true;
尽管如此,如果你从form2
“召唤”你的form1
,那么你可以通过在将控制传递给辅助表格之前检查按钮来节省一些繁琐的工作,类似于这样:
radioButton2.Checked = true;
// Code that shows your "form2" goes here.
在任何一种情况下,请务必将form1
和form2
替换为表单的实际名称。
希望这有帮助。