5

ボタンがクリックされたときに、Windowsフォームがそのフォームから新しいフォームに値を渡そうとしているのを取得しました。使用:

private void Edit_button_Click(object sender, EventArgs e)
        {
             for (int i = 0; i < listBox1.SelectedItems.Count; i++)
            {

             Edit item = new Edit(int.Parse(listBox1.SelectedIndex.ToString()));
            item.ShowDialog();

            }
        }

プログラムを実行すると、設計したフォームが表示されません。代わりにこれが表示されます。 問題

しかし、コードをこれに変更すると:

 Edit item = new Edit();
   item.ShowDialog();

それを実行すると、正しいものが表示されますが、2番目のフォームに値が渡されません。 ここに画像の説明を入力してください

別のフォームに値を渡す方法はありますか?

4

3 に答える 3

7

プロパティを追加する

Edit item = new Edit();
item.Value = 5;
item.ShowDialog();

編集:

このプロパティを使用するには、このプロパティを定義する必要があります。Edit次のようにクラスを拡張します。

class Edit {
    ...
    public int Value { get; set; }
    ...
}
于 2012-05-03T10:37:24.897 に答える
1

パラメータ化されたコンストラクタが本体に含まれていることを確認してくださいInitiaizeComponent()。この関数名が指定するように、会社のラベル、テキストボックス、ボタンなどのフォームのコンポーネントを初期化します。

方法をお話しします。

編集フォームのパラメーター化されたコンストラクターを作成します。その値を変数に渡します

public class Edit
{
    public int val = 0;

    public Edit()
    { 
        InitializeComponent();
    }

    public Edit(int a)
    {
        val = a; 
        InitializeComponent();
    }

    public void Edit_Load()
    {
      txtbox.Text = val.ToString();
    }
}

次のような最初のフォームから編集を呼び出します

Edit item = new Edit(5);
于 2012-05-03T10:37:35.363 に答える
1

推測: あなた自身のコンストラクターで、IntializeComponents() を呼び出すのを忘れていました。

于 2012-05-03T10:39:25.177 に答える