簡體   English   中英

如何基於form1組合框值禁用form2組合框?

[英]How to disable form2 combo boxes based on form1 combo box value?

我試圖基於窗體1選定值禁用窗體2中的某些組合框。

假設在Form1中,如果comboxbox值為0,則禁用表單2中的某些組合框

我在form1中所做的

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public ComboBox combo
    {
        get { return dropdown; } 
    }

到目前為止,在表格2中

private void Form2_Load(object sender, EventArgs e)
{
  Form1 f = new Form1();
  if (f.combo.SelectedIndex == 0)
  {
    comboBox1.Enabled = false;
  }

這是行不通的,我無法解決(C#新手)

如果使用以下語法在Form上創建Form1:

  Form1 f = new Form1();

您將獲得Form1的新實例(或“副本”),而不是已經打開的實例。 您需要將Form1的引用傳遞給Form2。

將此代碼放入Form2中:

private Form1 myParentForm;
public Form2(Form1 parentForm)
{
  myParentForm = parentForm;
}

然后,您可以通過變量myParentForm使用Form1。 像這樣:

private void Form2_Load(object sender, EventArgs e)
{
  if (myParentForm.combo.SelectedIndex == 0)
  {
    comboBox1.Enabled = false;
  }
}

在Form1中,您有如下代碼:

Form2 mySecondForm = new Form2();

更改為:

Form2 mySecondForm = new Form2(this);

這是一個先前的答案,其中有多個樣本將一種形式稱為另一種形式的參數,包括其中一種形式的完整分步樣本。

現在,關於啟用/禁用,您可以使用屬性或方法方法來告訴“其他”表單啟用/禁用狀態。這些示例只是在設置/獲取值。 如果您將一個布爾值之類的集合設置為所討論的形式,則您的setter部分可能類似於

   private bool enableFromOtherForm;
   public bool EnableFromOtherForm
   { 
      get { return enableFromOtherForm; }
     set { this.controlToChange.IsEnabled = value; }
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM