表格的加载,选择了某些单选按钮

时间:2011-03-31 20:08:40

标签: c# forms radio-button onload

我有2个表格。我想在加载另一个表单时检查单选按钮(按钮是第二种形式)。我试过了

OnLoad(radioButton2.Checked) 

但它没有奏效。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您只需将someRadioButton.Checked设为true即可 等待OnLoad毫无意义。

如果由于某种原因,您确实要等待Load事件,则需要为事件添加处理程序并将代码放入处理程序中。

答案 1 :(得分:1)

如果我理解正确,你的某个表格上有一个单选按钮(我们可以将其称为form1,以便我们可以区分它),并希望在加载另一个表单时更改它(我会在此处称为form2)。

您需要记住以下几点:

  1. 您需要确保可以从外部form1访问该按钮。如果两个表单都是同一个项目的一部分(我猜是这样),那么您需要确保该按钮是protected internalinternalpublic之一。
  2. form1实际上是一个类;但是屏幕上显示的表单不是form1类本身:它是类的实例。您将需要引用到该实例。
  3. 要访问对象的成员,请使用.(点)运算符。例如,如果您的form1实例名为myForm1,那么您需要输入myForm1.radioButton2来引用单选按钮。省略对象引用时,它默认为当前对象(即代码正在执行的对象)。因此,当您为form1键入代码时,您可以省略该引用,但要从form2访问它,您需要它(否则,编译器会认为您正在尝试访问名为“radioButton2”的内容)在form2内,可能甚至不存在。)
  4. 单选按钮的Checked属性(更具体地说,是bool属性):您可以获取或设置属性的值,但是可以引用属性用它做任何事情通常都是毫无意义的,在大多数情况下甚至都不会编译。
  5. 如果要执行代码以响应某些事件,则需要注册事件处理程序。事件处理程序只是一个返回void的函数,它接受一些参数(objectEventArgs或它的一些子类。注册处理程序可以通过programaticaly完成,但你最好从设计师那里做到这一点。要创建和注册事件处理程序,请按照下列步骤操作: 5.1。在设计器上选择表单,然后转到“属性”窗口。 5.2。切换到事件视图(小闪电图标) 5.3。找到您要处理的事件。在这种情况下,OnLoad,然后双击它。 5.4。瞧!设计人员为您的新事件处理程序创建了一个方法存根,为事件注册了它,并将您发送到代码视图中,以便您可以填写它。
  6. 所以,假设您有对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.
    

    在任何一种情况下,请务必将form1form2替换为表单的实际名称。

    希望这有帮助。