ユーザーがform1のボタンをクリックすると、form2が表示されるアプリケーションを作成しています。ユーザーはform2でチャットを記入し、次にform2を閉じるボタンをクリックし、処理のためにパラメータをform1に送り返します。どのようにC#でこれを行うことができますか?私はこれを行うためにプロパティを使用している人々を見てきましたが、例は十分にはっきりしていません。誰かが私がどのようにパラメータを渡すことができるか私に示すいくつかのコード例を与えることができますか?私はプロパティメソッドを好むだろうが、それが動作する限り、私は答えとして数えます。C#でのフォーム間のパラメータの受け渡し
答えて
簡単に言えば、フォーム要素を通常通りに2番目のフォームに配置します。次に、パブリックアクセサーをそのフォームに追加して、そこから引き出して参照することができます。たとえば、Form2のは、あなたが戻って引っ張ってみたかったテキストフィールドを持っている場合、あなたは可能性:
class Form2
{
// Form2.designer.cs
private TextBox TextBox1;
// Form2.cs
public String TextBoxValue // retrieving a value from
{
get
{
return this.TextBox1.Text;
}
}
public Form2(String InitialTextBoxValue) // passing value to
{
IntiializeComponent();
this.TextBox1.Text = InitialTextBoxValue;
}
}
あなたはOpenFileDialog等のファイル名の場合と同じよう(フォームを作成するときにだけ、後でそれにアクセス
public void Button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2("Bob"); // Start with "Bob"
form2.ShowDialog(); // Dialog opens and user enters "John" and closes it
MessageBox.Show(form2.TextBoxValue); // now the value is "John"
}
同じことはちょうどあなたがそれを検証/キャストしたい場合、フォームの値に依存し、またはそれ以外などのInt32、ブール、のために行うことができます。
Alternativly、あなたは内Modifiers
プロパティで遊ぶことができますあなたがコントロールを公にすることができるフォームデザイナーそれは外部からアクセス可能です。私は個人的には、値をダンプするのではなく、返された結果を検証して確認できるようにアクセサーを使用することをお勧めします(Form2を呼び出す/使用するすべてのインスタンスではなく、フォーム自体に通常見られるため)
ここIは、パラメータ(複数可)へと戻って別のフォームからを通過したい方法である:この例では
、上の「txtBoxForm1」テキストボックス:をForm1とForm2のための次のフォームデザインを提供
Form1は、 'txtBoxForm2'テキストボックスを初期化するために使用されるForm2に渡されます。 Form2。ユーザーがForm2と対話して[Return to Form1]ボタンをクリックすると、 'txtBoxForm2'テキストボックスの値が、Form1の 'txtBoxForm1'テキストボックスに(参照によって)返されたパラメータに割り当てられます。 Form1ので
ステップ1)、にShowDialog()メソッドオーバーロードによってフォーム2にパラメータを渡す:これは、2つの簡単な手順で行われるコーディング
上記で
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSend_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
//Step 1)
//Display the form passing parameter(s) via overloading
//the ShowDialog() method.
//In this example the parameter is the 'txtBoxForm1' on Form1.
// f2.ShowDialog(); is replaced by
f2.ShowDialog(ref txtBoxForm1);
}
}
をコードでは、パラメータは、参照によって渡される 'txtBoxForm1'テキストボックスです。これを参照渡すのは、テキストボックス値をForm2に渡すだけでなく、Form2を実行しているときに、そのテキストボックスパラメータに適用された変更をForm1で受け取って表示することができる理由です。
Form1クラス全体を入れて、 'f2.ShowDialog()'メソッド呼び出しのオーバーロードよりもこのクラスで特別なことがないことを示しました。オーバーロードにShowDialog()メソッドを介してパラメータを受信し、戻り
工程2):
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void btnReturn_Click(object sender, EventArgs e)
{
this.Close();
}
//Step 2)
//Receiving and returning parameter(s) via the overloaded ShowDialog() method.
//This saves the need to have Properties and or fields associated
//to parameters when overloading the above Form() constructor instead.
public void ShowDialog(ref TextBox txtBoxForm1)
{
//Assign received parameter(s) to local context
txtBoxForm2.Text = txtBoxForm1.Text;
this.ShowDialog(); //Display and activate this form (Form2)
//Return parameter(s)
txtBoxForm1.Text = txtBoxForm2.Text;
}
}
再び私はどのように限定示すために完全な形クラス(フォーム2この場合)コードを供給しましたコーディングの介入。ここで追加のフィールドやプロパティは必要ありません。これは、Form1のForm2コンストラクタではなく、 'ShowDialog()'命令を使用してパラメータを渡すためです。 Form2()コンストラクタとは異なり、ShowDialog()メソッドは、Form2とのユーザー対話フェーズの周りのエンベロープです。このように、そのタイミングは、 '(ref txtBoxForm1)'パラメータが、送受信したいパラメータの完全で十分な表現であることを可能にする。
異なるパラメータセット(シグネチャとも呼ばれます)を使用してメソッドをオーバーロードすると、メソッドのオーバーロードがC#.netの強力な機能となります。この場合、ここでは、一方では 'ShowDialog()'メソッドの呼び出しにパラメータを追加できますが、オーバーロードされたメソッドはこの同じメソッドの元のバージョンから何も失われません。 ShowDialog().netフレームワークメソッドは 'this.ShowDialog();'を介して同様に実行されます。命令。
これは私にとって今のところそれです。
これが役に立ちます。
参照を処理するのに最適なソリューション –
- 1. UWPページ間のパラメータの受け渡し
- 2. C#フォーム間でのデータの受け渡し
- 3. 2つのフォーム間の変数の受け渡し、マルチスレッドC#
- 4. ウィンドウ間のオブジェクトの受け渡しC#
- 5. C/C++でのパラメータの受け渡しと配列の範囲
- 6. Graphqlパラメータの受け渡し
- 7. F#パラメータの受け渡し
- 8. SASマクロでのパラメータの受け渡し
- 9. form_validationでのパラメータの受け渡しCodeigniter
- 10. JSP - JSPページ間でのパラメータの受け渡し
- 11. C#でのCrystalレポートへのパラメータの受け渡し
- 12. VB.NETフォーム間でのデータの受け渡し
- 13. フォーム間のデータの受け渡しはnullです
- 14. MDIParentからMDIChildフォームへのパラメータの受け渡し
- 15. メソッド、Xamarinフォームへのパラメータの受け渡し
- 16. jqueryを使用したhtmlページ間のパラメータの受け渡し
- 17. モーダルウィンドウとフォームの間のコントロールの受け渡し
- 18. フォームとクラスwinformsの間の値の受け渡し
- 19. C#.NETを使用したCrystalレポートのパラメータの受け渡し
- 20. パラメータAndroidとJNIの間の受け渡し
- 21. C++ CORBAメソッドの実装へのパラメータの受け渡し
- 22. Objective CのJSON Webサービスへのパラメータの受け渡し
- 23. プロセス間でのメッセージの受け渡し
- 24. クラス間でのSQLContextの受け渡し
- 25. メソッド間でのArrayListの受け渡し
- 26. アクティビティ間でのパスワードの受け渡し
- 27. ReactJs - イベントハンドラへのパラメータの受け渡し
- 28. プロミスチェーンへのパラメータの受け渡し
- 29. WebClient.DownloadFileCompletedイベントへのパラメータの受け渡し
- 30. WCFメタデータへのパラメータの受け渡し
form1からform2パラメータを渡すことができる方法はありますか?同じコードで2番目のform1が作成されます。 –
Form2の構文をパラメータとして提供するか、ShowDialogを呼び出す前に設定する他のプロパティを使うことができます(ただし、 'InitializeComponent()'の後にコントロールを変更する必要があります)それらのproeprtiesがフォームの表示方法に実際に影響している場合)。 –
@DazSlayer:別のフォームに値をプッシュしたり、別のフォームから値を取得したりするために、サンプルにさらに情報を追加しました。 –