ホームページ  >  記事  >  バックエンド開発  >  WinForm 開発、フォーム表示、フォーム値転送

WinForm 開発、フォーム表示、フォーム値転送

巴扎黑
巴扎黑オリジナル
2016-12-20 15:10:231288ブラウズ

以前は WinForm フォームの表示とフォーム間の値の転送についてあまり知りませんでした。
最近 WinForm 開発を行ったことがありますが、使用した関連知識は次のように整理されています

A. WinForm でのフォーム表示
表示フォームには次のようなものがあります。次の 2 つのメソッド:
Form.ShowDialog メソッド (フォームはモーダル フォームとして表示されます)
Form.Show メソッド (フォームはモードレス フォームとして表示されます)

2 つの具体的な違いは次のとおりです。 Form.Show メソッドを呼び出した後、Show メソッドの背後にあるコードはすぐに実行されます
2. Form.ShowDialog メソッドを呼び出した後、このメソッドの背後にあるコードはダイアログ ボックスが閉じるまで実行されません
3.モーダルフォームとして表示されている場合、「閉じる」ボタンをクリックするとフォームが非表示になり、DialogResult プロパティが DialogResult.Cancel に設定されます
モードレスフォームとは異なり、ユーザーがダイアログボックスのフォームを閉じるボタンをクリックするか、DialogResult の値を設定すると、
実際には、フォームの Visible プロパティを false に割り当てることで、フォームが非表示になります。
このようにして、ダイアログ ボックスの新しいインスタンスを作成せずに、非表示のフォームを再表示できます。
フォームが閉じられていないため、フォームが再度必要になった場合は、フォームの Dispose メソッドを呼び出してください。
フォームがモーダル モードで表示される場合は true、それ以外の場合は false を使用します。

Show および ShowDialog を通じて表示されるフォームの Modal プロパティに従って、それぞれ false と true に対応します。特記事項:

ウィンドウ内ではボディが作成される前に表示モードを知ることができないため、フォームコンストラクターではModal属性は常にfalseに対応するため、Modal属性値はLoadイベント以降でのみ使用できます

フォーム関係の所有者を決定する方法?
Form クラスの Owner プロパティ: フォームの所有者
フォームが別のフォームによって所有されている場合、そのフォームは最小化され、所有者のフォームとともに閉じられます。

たとえば、Form2 がフォーム Form1 によって所有されている場合、Form1 が閉じるか最小化されると、Form2 も閉じるか最小化されます。


たとえば、フォーム Form1
Form2 f2 = new Form2 ( );
f2.ShowDialog ( this );

//or

f2.Show ( this );
//or
f2.Owner = this;
f2 .ShowDialog( );

このように、f2のオーナーはForm1です

B.WinFormフォームの値の転送

フォームの表示に関する知識を理解した上で、フォームの値の転送方法をまとめます:

1. コンストラクターを介して

特徴: 値の転送は一方向であり (値を相互に転送することはできません)、実装は簡単です
実装コードは次のとおりです:

Form2 の形式で

int value1;
string value2;

public Form2 (int value1, string value2)
{
InitializeComponent ( );

this.value1 = value1;
this.value2 = value2;
}

フォーム Form1 で次のように呼び出します
new Form2 ( 111 , "222" ).Show ( ); //このように、2 つの値 111、"222" が静的変数を介して Form2

2 に転送されます

特徴: 値の転送は双方向であり、実装が簡単です
実装コードは次のとおりです。

アプリクラスで静的メンバー値を定義します

public class app
{
public static string value;
}

Form1 で次のように呼び出します
app.value = "f2";静的メンバーに値を代入
new Form2 ( ).Show ( ); // Form2

をフォーム2に表示

this.Text = app.value // app.valueの値を取得
app.value; Form2"; //他のフォームから呼び出せるように、app.value に値を割り当てます

3. フォームのパブリック プロパティ値を使用します

特徴: 簡単な実装
実装コードは次のとおりです:

textBox1 のテキスト値を取得および設定する Form2 の public property Form2Value

public string Form2Value
{
get

{

これを返します。 .Form2Value = "Ok"; //Form2
f2 の textBox1 に値 Ok を代入します。 ShowDialog ( );

4. フォームのパブリック プロパティ値と Owner プロパティを使用する (推奨)
特徴: シンプルで柔軟な実装
実装コードは次のとおりです:
フォーム Form1 で
public int Form1Value = 1; Form2 f2 = new Form2 ( );
f2.ShowDialog ( this ); // Form2 の所有者として Form1 を Form2 に渡します

フォーム Form2 で
// Form2 の所有者は Form1 です

Form1 f1 = (Form1) this。 Owner;

//Form1から取得した値は1です
MessageBox.Show ( f1.Form1Value .ToString ( ) );
//Form1に与えられたForm1Valueに値222を割り当てます
f1.Form1Value = 222;

5。フォームの public プロパティ値と Application.OpenForms プロパティ
説明: Application.OpenForms プロパティ: アプリケーションに属する開いているフォームのコレクションを取得します。 (このプロパティは .NET Framework バージョン 2.0 にあります)
実装コードは次のとおりです:
フォーム Form1 内
public int Form1Value = 1;

Form2 f2 = 新しい Form2 ( );

フォーム Form2 内

string formName = "Form1";
Form fr = Application.OpenForms [ formName ]; {
Form1 f1 = ( Form1 ) fr;

//Form1から取得した値は1

MessageBox.Show ( f1.Form1Value.ToString ( ) );
//Form1のForm1Valueの値を222に代入
f1.Form1Value = 222;
}

6. イベント
を通じて実装されるコードは次のとおりです:
フォーム Form2 でパブリック プロパティ Form2Value を定義し、textBox1 のテキスト値を取得および設定します

、また受け入れイベント

パブリック ストリング Form2Value
を定義します。 {
get

this.textBox1 を返します。
{
if ( accept != null )
{
Accept ( this , EventArgs.Empty );フォームはイベントをトリガーし、独自の参照を渡します
}
}

Form1
Form2 f2 = new Form2 ( );
f2 .accept += new EventHandler ( f2_accept );

f2.Show ( );


void f2_accept ( object sender , EventArgs e )
{
/ /イベントの受信者は、単純な型変換を通じて Form2 への参照を取得します
Form2 f2 = (Form2) sender;
//Form2 から textBox1.Text を受け取ります
this.textBox1.Text = f2.Form2Value
}


;

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。