0

私は C# が初めてで、別のクラスからメソッドを呼び出すときにコンボボックスを埋めるのに問題があります。私のソースはこんな感じです

クラス1

private void btn_login_Click(object sender, EventArgs e)
{
    UserControl1 uc1 = new UserControl1();
    uc1.fill_cbb();
}

クラス2

public void fill_cbb()
{
    cbb_table.Items.Add("Text1");
    cbb_table.Items.Add("Text2");
    cbb_table.SelectedIndex = 0;
}

そのようにすると、コンボボックスは空になります。

4

2 に答える 2

2

Aspの場合は、IsPostBackイベントに注意してください。

于 2013-01-17T13:16:51.103 に答える
0

問題は、別のクラスからメソッドを呼び出さないことです。UserControl1カスタムユーザーコントロールであり、あなたが言及した「クラス2」はuserControl1だと思います。

コードはそのまま機能しますが、そのコントロールの間違ったインスタンスで呼び出しています。

btn_login_Clickメソッドでは、UserControl1のまったく新しいインスタンスを生成しています。もちろん、それは許可されています。そのため、Visual Studioはエラーとしてマークを付けませんが、 uc1は実際にフォームに配置されるコントロールにはなりません。

フォームで、コントロールに「cbxOptions」という名前を付けたとします。次に、ボタンクリックイベントで、あなたは書く必要があります

cbxOptions.fill_cbb();

代わりに、そのコンボボックスもUserControl1タイプの場合。その後、それはうまくいくはずです。

警告、車の例え:それはあなたがあなたの車に新しい塗装の仕事をしたいときのようなものです。次に、同じモデルの新しい車を購入し、それをペイントショップに持っていき、ペイントしてから、廃品置き場に持って行き、粉砕します。もちろん、古い車は同じ古い色のままです。

于 2013-01-17T13:18:21.103 に答える