C#多窗口窗体选择

本文关键字:选择 窗体 窗口 | 更新日期: 2023-09-27 18:21:11

我正在处理一个多窗口窗体项目,其中从一个窗体的组合框中选择的值应该在另一个窗体上启用组合框。有人能告诉我如何做到这一点吗?

在Form1的组合框中,列表中的一些项目是"芒果"、"香蕉"、"木瓜"、"橙子"。

在Form2的组合框中,值为1、2、3、4。因此,如果用户在表格1上选择芒果或木瓜,表格2上的组合框将启用,用户可以选择一个数字。否则,组合框将保持禁用状态。

这是我的工作。

我为这两种形式创建了一个具有2个属性的公共类。

public class FormValues
{
    private bool _secondcbb = false;
    private string _firstcbb = "";
    public bool SecondCbb
    {
        get
        {
            return _secondcbb;
        }
        set
        {
            _secondcbb = value;
        }
    }
    public string FirstCbb {get; set;}
}
// ..... On Form1:
Form2 frm2 = new Form2();
FormValue val = new FormValue();
private void ComboBox1_SelectedIndexChanged(whatever inside)
{
    if(ComboBox1.SelectedText == "Mango")
    {
        val = true;
        frm2.ComboBox2 = val;
    }
}

我在Form2上什么都不做。除了添加控件并将组合框设置为禁用。

C#多窗口窗体选择

在表单2上创建一个公共静态方法,如果表单1上的comboBox项被这样选择,该方法将更改comboBox状态:

public static void ChangeState(bool state) // Method on Form 2
{
    comboBox2.Enabled = state;
}

选择项目时启用组合框2:

private void comboBox1_SelectedIndexChanged(whatever inside)
{
    if(comboBox1.SelectedText == "Mango" || comboBox1.SelectedText == "Papaya")
        frm2.ChangeState(true);
    else
        frm2.ChangeState(false);
}

为什么不设置ComboBox2的enabled属性?像这样:

frm2.ComboBox2.Enabled = true;

这样你就不需要FormValue了,还是我错了?

目前还不清楚您的FormValues类在做什么,但我认为这从一开始就没有必要。在您的Form2中创建一个方法来完成您需要该表单执行的操作:

public void SomeMethod()
{
    // enable the control?
    // edit the control?
}

这将允许任何拥有对Form2实例的引用的东西使用公开的功能对其进行操作。为Form1提供这样的参考。它要么在内部实例化Form2的实例,要么需要一个作为构造函数参数。无论哪种方式,Form1都应该引用Form2:的实例

private Form2 Form2Instance { get; set; }

然后,在Form1中控件的处理程序中,您只需调用该实例上的功能:

this.Form2Instance.SomeMethod();