ホームページ バックエンド開発 C#.Net チュートリアル WinForm 開発、フォーム表示、フォーム値転送

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

Dec 20, 2016 pm 03:10 PM

以前は 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語でさまざまなシンボルを使用する方法 C言語でさまざまなシンボルを使用する方法 Apr 03, 2025 pm 04:48 PM

c言語のシンボルの使用方法は、算術、割り当て、条件、ロジック、ビット演算子などをカバーします。算術演算子は基本的な数学的操作に使用されます。割り当てと追加、下位、乗算、除算の割り当てには、条件操作に使用されます。ポインター、ファイル終了マーカー、および非数値値。

C文字列におけるcharの役割は何ですか C文字列におけるcharの役割は何ですか Apr 03, 2025 pm 03:15 PM

Cでは、文字列でCharタイプが使用されます。1。単一の文字を保存します。 2。配列を使用して文字列を表し、ヌルターミネーターで終了します。 3。文字列操作関数を介して動作します。 4.キーボードから文字列を読み取りまたは出力します。

C言語で特殊文字を処理する方法 C言語で特殊文字を処理する方法 Apr 03, 2025 pm 03:18 PM

C言語では、以下などのエスケープシーケンスを通じて特殊文字が処理されます。\ nはラインブレークを表します。 \ tはタブ文字を意味します。 ESACEシーケンスまたは文字定数を使用して、Char C = '\ n'などの特殊文字を表します。バックスラッシュは2回逃げる必要があることに注意してください。さまざまなプラットフォームとコンパイラが異なるエスケープシーケンスを持っている場合があります。ドキュメントを参照してください。

マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

C言語でchar配列の使用方法 C言語でchar配列の使用方法 Apr 03, 2025 pm 03:24 PM

Char Arrayは文字シーケンスをC言語で保存し、char array_name [size]として宣言されます。アクセス要素はサブスクリプト演算子に渡され、要素は文字列のエンドポイントを表すnullターミネーター「\ 0」で終了します。 C言語は、strlen()、strcpy()、strcat()、strcmp()など、さまざまな文字列操作関数を提供します。

C言語のcharとwchar_tの違い C言語のcharとwchar_tの違い Apr 03, 2025 pm 03:09 PM

C言語では、charとwchar_tの主な違いは文字エンコードです。CharはASCIIを使用するか、ASCIIを拡張し、WCHAR_TはUnicodeを使用します。 Charは1〜2バイトを占め、WCHAR_Tは2〜4バイトを占有します。 charは英語のテキストに適しており、wchar_tは多言語テキストに適しています。 CHARは広くサポートされており、WCHAR_TはコンパイラとオペレーティングシステムがUnicodeをサポートするかどうかに依存します。 CHARの文字範囲は限られており、WCHAR_Tの文字範囲が大きく、特別な機能が算術演算に使用されます。

C言語でCharを変換する方法 C言語でCharを変換する方法 Apr 03, 2025 pm 03:21 PM

C言語では、charタイプの変換は、キャスト:キャスト文字を使用することにより、別のタイプに直接変換できます。自動タイプ変換:あるタイプのデータが別のタイプの値に対応できる場合、コンパイラは自動的に変換します。

C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

See all articles