C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

パネルを重ねた時に入れ子にしない方法

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■95828 / inTopicNo.1)  パネルを重ねた時に入れ子にしない方法
  
□投稿者/ みかわ (1回)-(2020/09/30(Wed) 13:45:52)

分類:[.NET 全般] 

ご覧いただき有難うございます。
開発環境 VS2019
使用言語 C# Windowsフォーム

フォームの上に3枚のパネルを重ね、その上にテキストを貼り付けて表示しているのですが、
入れ子にならない様に、フォームの離れたところでそれぞれ作成し(ツールボックスから)、プロパティのロケーションで位置を合わせていますが、何度しても入れ子になってしまうようで上手く行きません。
ロケーションで位置を合わせずにマウス移動も試しましたが上手く行きませんでした。

どうしたらいいでしょうか。

引用返信 編集キー/
■95829 / inTopicNo.2)  Re[1]: パネルを重ねた時に入れ子にしない方法
□投稿者/ 粗品 (6回)-(2020/09/30(Wed) 14:35:26)
一旦 入れ子じゃないのをタブオーダーを表示して確認してから
プロパティウィンドウのLocation.XとYを手打ちするしかないように思います
引用返信 編集キー/
■95831 / inTopicNo.3)  Re[2]: パネルを重ねた時に入れ子にしない方法
□投稿者/ みい (119回)-(2020/09/30(Wed) 15:32:34)
おすすめはできませんが
Designer.cs内のControls.Add部分を直打ち修正

引用返信 編集キー/
■95832 / inTopicNo.4)  Re[1]: パネルを重ねた時に入れ子にしない方法
□投稿者/ 魔界の仮面弁士 (2851回)-(2020/09/30(Wed) 15:37:20)
No95828 (みかわ さん) に返信
> フォームの上に3枚のパネルを重ね、その上にテキストを貼り付けて表示しているのですが、

そちらの要件にあうかどうかは分かりませんが、
セットアップ ウィザードのような、ページが切り替わるような
画面を作ろうとしているのかな、と予想してみました。


もし、3 枚のパネルが、すべて同一サイズかつ同一座標に配置しておき、
いずれか一枚のみが Visible = true にして運用するようなケースであれば、
自分は 入れ子の Panel を使うようにしています。


たとえば、横400 x 縦300 とする場合…


1: 親となるパネル panel0 を配置。
 Size = (400, 300)
 AutoScroll = true

2: 子となるパネル panel1 を panel0 の中に配置。
 Dock = Left
 Width = 300
 ※Height は気にしない

3: panel1 を Ctrl+C でクリップボードにコピーし、
 panel0 を選択した状態にしてから Ctrl+V。
 これで、panel1 の右に panel2 が追加されて、
 panel0 で水平スクロールできる状態になるはず。

4: 再度、panel0 を選択した状態で Ctrl+V。
 同様に panel3 が追加されて、panel0 の上に
 3 枚のパネルが載った状態になるハズ。

5. panel0 と panel1 の Visible を true にして、
 panel2 と panel3 の Visible を false にしておく。


これで実行すれば、画面上には パネルが 1 枚だけに見えますし、
画面デザインもやりやすくなるかと。

※AutoScroll を False に戻すかどうかは任意。
引用返信 編集キー/
■95834 / inTopicNo.5)  Re[3]: パネルを重ねた時に入れ子にしない方法
□投稿者/ みかわ (2回)-(2020/09/30(Wed) 17:09:03)
せっかく教えて頂きましたが
上記はどちらも上手く行きませんでした。

引用返信 編集キー/
■95835 / inTopicNo.6)  Re[1]: パネルを重ねた時に入れ子にしない方法
□投稿者/ shu (1234回)-(2020/10/01(Thu) 07:10:53)
No95828 (みかわ さん) に返信
> フォームの上に3枚のパネルを重ね、その上にテキストを貼り付けて表示しているのですが、
> 入れ子にならない様に、フォームの離れたところでそれぞれ作成し(ツールボックスから)、プロパティのロケーションで位置を合わせていますが、何度しても入れ子になってしまうようで上手く行きません。
> ロケーションで位置を合わせずにマウス移動も試しましたが上手く行きませんでした。
うまくいかないというのはどのように判断されていますでしょうか?

Locationまで修正し他にデザインを触らずに
実行時にPanelのVisible切り替えた(あらかじめプログラムに書いておく)ときの挙動はどのようになりますか?
引用返信 編集キー/
■95837 / inTopicNo.7)  Re[2]: パネルを重ねた時に入れ子にしない方法
□投稿者/ みかわ (3回)-(2020/10/01(Thu) 11:58:55)
No95835 (shu さん) に返信
> ■No95828 (みかわ さん) に返信
>>フォームの上に3枚のパネルを重ね、その上にテキストを貼り付けて表示しているのですが、
>>入れ子にならない様に、フォームの離れたところでそれぞれ作成し(ツールボックスから)、プロパティのロケーションで位置を合わせていますが、何度しても入れ子になってしまうようで上手く行きません。
>>ロケーションで位置を合わせずにマウス移動も試しましたが上手く行きませんでした。
> うまくいかないというのはどのように判断されていますでしょうか?
>
> Locationまで修正し他にデザインを触らずに
> 実行時にPanelのVisible切り替えた(あらかじめプログラムに書いておく)ときの挙動はどのようになりますか?

表示されるパネルもあれば、されないパネルもある状態です。

引用返信 編集キー/
■95838 / inTopicNo.8)  Re[3]: パネルを重ねた時に入れ子にしない方法
□投稿者/ 粗品 (7回)-(2020/10/01(Thu) 14:09:06)
別々の位置のままで実行して正しい動きなら
実行時にパネル2,3のLocationを動かすとか

panel2.Location = panel1.Location;
panel3.Location = panel1.Location;
引用返信 編集キー/
■95839 / inTopicNo.9)  Re[4]: パネルを重ねた時に入れ子にしない方法
□投稿者/ みかわ (4回)-(2020/10/01(Thu) 15:09:11)
No95838 (粗品 さん) に返信
> 別々の位置のままで実行して正しい動きなら
> 実行時にパネル2,3のLocationを動かすとか
>
> panel2.Location = panel1.Location;
> panel3.Location = panel1.Location;

有難うございます。
上手く行きました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ