1

form1のテキストボックスをダブルクリックすると、データグリッドが開きます。form2のデータグリッドのセルを2回クリックする必要があります。クリックすると、form1のテキストボックスに値が表示されます。彼がすでに実行している多くの方法を試しましたが、セルをクリックする前にテキストボックスに値が自動的に追加されます。誰か助けてもらえますか?

私はこれを試しました:

form1で

         Ncm Ncm formNcm = new ();
         formNcm.Show ();
         ncmcb.Text formNcm.getNCM = ();
         ncmcb.Focus ();

form2

public string getNCM(){= dataGridView1.CurrentCell.Value.ToString value2 string(); 戻り値2; }この方法でのみ、データグリッドの値を既に所有していることを選択し、変更することはできません。変更した場合、form1のテキストボックスの値を取得しません。

4

1 に答える 1

0

設計上、あるフォームは、他のフォームにテキストボックスやドロップダウン、またはその他のコントロールがあることを決して認識してはなりません。理想的には、2 つのフォームは、パブリック プロパティまたはカスタム イベントを介して対話する必要があります。

Form2 から Form1 への値の代入

  1. フォーム 2 でカスタム イベントを定義します。

  2. Form1 をそのイベントに登録して、Form 2 が発生したときに Form1 がそれ​​をキャッチできるようにします。

  3. Form2 でグリッド セルのクリック イベントをキャプチャし、カスタム イベントを発生させます。EventArgs を使用して値を渡します。

  4. Form1 では、イベント ハンドラーが動作し、フォーム 2 から送信した値を割り当てることができます。

これはまさにそれを行う記事です: http://www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms

Form2 から Form1 に値を代入する場合は、

Form 2 で、プロパティを定義します。

publis string MyTextBoxValue //Choose a better name :)
{
     set {myTextBox.Text = value;}
}

フォームを開くと、次のように呼び出します。

     Ncm Ncm formNcm = new ();
     formNcm.MyTextBoxValue = "Grid Cell Value"; //Whatever your value is
     formNcm.Show ();
     ncmcb.Text formNcm.getNCM = ();
     ncmcb.Focus ();
于 2012-04-18T00:02:54.867 に答える