c# ドッキングしているコントロールを取得するには

解決済みの質問

c# ドッキングしているコントロールを取得するには

 こんにちは。c#初心者です。

 コントロールを制作しているのですが、その途中で「System.Windows.Forms.Splitter」のようにドッキングしているコントロールに対して働き掛ける処理で、そのドッキングしているコントロールを取得する方法が分からず苦戦しています。

 視覚化すると、□を現在制作中の「SampleControl」、■を任意の「Control」、■、□共に「Dockプロパティ」が「DockType.Left」とすると、

■□ のように並んでいる際に□内部で■を取得する方法です。

 どなたか詳しい方がいらっしゃいましたら教えていただけませんか?

投稿日時 - 2012-04-24 14:36:12

QNo.7438863

困ってます

質問者が選んだベストアンサー

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.dock.aspx
によるとzオーダーに従って並べられるそうなので、Dock = DockStyle.Left、かつ、zオーダーが自分より大きいコントロールの中で、zオーダーが最小のものが左隣のコントロールになるようです。
少しだけ試してみたところ、Controls を foreach で回すとzオーダーの順で取得できるようなので、
次のようにするとできるようです。(確認が十分ではありません。)

Form f = this.ParentForm;
int myIndex = f.Controls.GetChildIndex(this);
foreach (Control child in f.Controls)
{
if (child.Dock == DockStyle.Left)
{
if (myIndex < f.Controls.GetChildIndex(child))
{
MessageBox.Show(child.Name);
break;
}
}
}

投稿日時 - 2012-04-25 03:28:34

お礼

 解答ありがとうございます。
 おかげさまでうまくいきました。

投稿日時 - 2012-05-12 21:32:08

ANo.1

0人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • left ...
  • C#、VB.NETのDockプロパティについて ...
  • Mac OS Lion dockからの削除 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら