質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

22389閲覧

C#のParentプロパティについて

nkt070408

総合スコア29

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/11/30 05:39

現在C#について勉強しており、イベントやコントロールについて取り組んでいます。
そこでParentというものが出てきたのですが、何度も出てくる割に参考書に解説もなく、困っています。調べてみても「コントロールの親コンテナーを取得または設定する」としかなく、意味がわかりません。どなたかわかりやすく教えていただけないでしょうか。よろしくお願いします。

C#

1using System; 2using System.Windows.Forms; 3 4namespace _10 5{ 6 class Sample10 : Form 7 { 8 private Label lb; 9 private Button bt; 10 11 static void Main(string[] args) 12 { 13 Application.Run(new Sample10()); 14 } 15 16 public Sample10() 17 { 18 this.Text = "さんぷる"; 19 this.Width = 300; 20 this.Height = 250; 21 22 // ラベルの作成 23 lb = new Label(); 24 lb.Text = "いらっしゃいませ"; 25 lb.Dock = DockStyle.Top; 26 27 // ボタンの作成 28 bt = new Button(); 29 bt.Text = "購入"; 30 // ボタンをフォームの一番下に配置 31 bt.Dock = DockStyle.Bottom; 32 33 // クリックされたときにイベント発生 34 bt.Click += new EventHandler(bt_Click); 35 36 lb.Parent = this; 37 bt.Parent = this; 38 } 39 40 public void bt_Click(Object sender, EventArgs e) 41 { 42 MessageBox.Show("ご購入ありがとうございました", "購入"); 43 } 44 } 45}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

lb.Parent = this; は this.Controls.Add(lb); と同じです。

普通は、コントロール(上の例では Label)をフォーム(上の例では Sample10)が保持する Control のコレクションに追加するという意味で後者のようにします・・・と言ったらわかっていただけるでしょうか?

投稿2017/11/30 06:22

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nkt070408

2017/11/30 06:50

回答ありがとうございます。 そもそも何をどうしているのかが不明瞭でしたが、この一文でLabelを追加している、と考えてみたらなんとか理解することができました。
guest

0

ベストアンサー

System.Windows.Formsではコントロールを重ね合わせるイメージで画面を構成していきます。
そしてForm自体もコントロールです。
記述されたサンプルコードではLabelとButtonのParentをthis(つまりForm自身)と指定することで、Formコントロールの上にLabelコントロールとButtonコントロールを配置したことを表現しているわけです。
例えばLabelの視点でParentを考えた場合、**自分が属している親コントロールは?**がParentの示すものです。
ただ普通の書き方するなら以下のようになる気がしますが。。(未確認未検証)

C#

1 //lb.Parent = this; 2 //bt.Parent = this; 3 this.Controls.Add(lb); 4 this.Controls.Add(bt);

投稿2017/11/30 06:11

ShikaTech

総合スコア468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nkt070408

2017/11/30 06:47

回答ありがとうございます。 Parentの示すもの、というところからフォームを構成する部品の一部としてラベルやボタンを追加している、と考えたらなんとなくすっきりしました。 ソースも上記のように変えてみましたが問題なく動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問