1

form1 と form 2 の 2 つのフォームがあります。comboBox は form2 にあります。form1 からのコンボ ボックスの選択肢のリストに項目を追加しようとしています。これが私がこれまでに試したことです。

form1:          
var form2 = new Form2();                   
if (variable == "value") {           
  form2.Controls["ComboBox1"].Items.Add("another item")          
}

this.Hide();          
form2.Show; 

これの問題は、アイテムを選択できないことです。(.Items.Add を入力できません)


また、フォームでコンボボックスをクリックし、プライベートをパブリックに変更して、コンボボックスをパブリックにしようとしました。変えるとこんな感じ。

public void comboBox1_SelectedIndexChanged(object sender, EventArgs e){
}

しかし、comboBox1利用可能なものすべてにアクセスしようとすると、次のようになります。

comboBox1_SelectedIndexChanged

form2.comboBox1    //This doesn't work            
form2.comboBox1_SelectedIndexChanged   //This is the only option available 

私はおそらくたくさんの間違いを犯しましたが、それは私がこれに慣れていないからです。勉強を始めたばかりなので、簡単に説明していただければ助かります。可能であれば、get{} set{} は避けてください。上記の例のように、ボタンをクリックしてプライベートからパブリックに変更するのは正しい方法ではないことを知っているので、別のフォームのボタンやその他のものをパブリックにする方法を説明してください。

4

3 に答える 3

5

ビジュアル UI デザイナーに移動し、プロパティで修飾子を見つけて、パブリックに変更します。 ここに画像の説明を入力

ここで、コードを少し変更する必要があります。

var form2 = new Form2();                   
if (variable == "value") {           
 form2.ComboBox1.Items.Add("another item");      
}

this.Hide();          
form2.Show; 
于 2014-08-22T19:20:30.613 に答える
1

このコンボ ボックスに項目を追加する Form2 にパブリック メソッドを記述する必要があります。

public class Form2 : Form {
    ...

    public void AddItem(object item) {
       comboBox1.Items.Add(item);
    }

    ...
}

そうすれば、Form1 でそのメソッドを呼び出すだけです。

form2.AddItem(variable);
于 2012-05-21T03:52:13.637 に答える
0

これを行うには、イベント ハンドラーを使用するのが最適です。フォーム 1 のイベント ハンドラーを、このイベント ハンドラーが呼び出されたときに対応するメソッドに登録します。次に、form2 でこのイベント ハンドラーを呼び出します。このメソッドは、アイテムをコンボ ボックスに追加する役割を果たします。

于 2012-05-21T03:57:58.940 に答える