16

私は Head First C# の本を読んで、InitializeComponent(); を使用しました。方法を数回。

この例は、Party Planner の演習で、DinnerParty.cs というクラスを作成し、このコードを Form1.cs で使用しました。

public Form1()         
        {        
            InitializeComponent(); 
            dinnerParty = new DinnerParty() { NumberOfPeople = 5 };
            dinnerParty.SetHealthyOption(checkBox2.Checked);
            dinnerParty.CalculateCostOfDecorations(checkBox1.Checked);
            DisplayDinnerPartyCost();
        }

私の質問は、 Initialize Component メソッドが何をしているのかということです。私の理解では、DinnerParty クラスの新しいオブジェクトまたはインスタンスを定義し、すべての値を設定しているということです。

BASIC をお願いできますか。定義について理解できるものです。これに関する以前の投稿と回答を見てきましたが、すべてが複雑すぎます。重要な情報がまだ回答として含まれている、最も理解しやすい回答にマークを付けます。

4

2 に答える 2

33

InitializeComponentは、フォームを作成/変更するときにフォームデザイナによって自動的に作成されるメソッドです。

すべてのFormsファイル(Form1.csなど)には、InitializeComponentメソッド、汎用Form.Disposeのオーバーライド、およびボタンやテキストボックスなどのすべてのユーザーインターフェイスオブジェクトの宣言を含むデザイナーファイル(Form1.designer.csなど)があります。 、ラベルおよびフォーム自体。

InitializeComponentメソッドには、フォームデザイナのプロパティグリッドを使用してユーザー(プログラマー)から提供された値を使用して、フォームサーフェスにドラッグされたユーザーインターフェイスオブジェクトを作成および初期化するコードが含まれています。このため、InitializeComponentを呼び出す前に、フォームやコントロールを操作しないでください
また、ここには、コントロールとフォームイベントを、ユーザーアクションに応答するために作成した特定のイベントハンドラーにリンクするために必要な配管があります。

Form1.csファイルとForm1.Designer.csファイルに含まれるコードは、コードの2つ以上のファイルを1つのコードブロックのようにまとめることができる 部分クラスの概念のおかげで、同じクラスの一部です。

もちろん、フォームデザイナによって実行される変更の数が多いため、このメソッドを手動で変更しないことをお勧めしますが、場合によっては、破棄する目的でDisposeメソッドにコードを追加すると便利です。フォームの有効期間中に作成された一部のアンマネージオブジェクト。

于 2012-09-06T09:43:07.623 に答える
2

InitializeComponentは、フォームを初期化するために使用されるメソッドです。それはあなたのDinnerPartyクラスとは何の関係もありません。

そのため、ユーザーインターフェイスにボタン、ラベル、イベントハンドラーなどを設定している可能性があります。

ここに、より詳細な説明があります。 InitializeComponent()は何をし、WPFではどのように機能しますか?

于 2012-09-06T09:38:11.853 に答える