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

わんくま同盟

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

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

ツリー一括表示

DockPanel Suiteでコントロールが表示されない /Miki (19/01/05(Sat) 11:34) #89818
Re[1]: DockPanel Suiteでコントロールが表示されない /ぼーちゃん (19/01/05(Sat) 16:34) #89821
  └ Re[2]: DockPanel Suiteでコントロールが表示されない /Miki (19/01/05(Sat) 19:51) #89823
    └ Re[3]: DockPanel Suiteでコントロールが表示されない /Miki (19/01/05(Sat) 23:14) #89824 解決済み


親記事 / ▼[ 89821 ]
■89818 / 親階層)  DockPanel Suiteでコントロールが表示されない
□投稿者/ Miki (1回)-(2019/01/05(Sat) 11:34:34)

分類:[C#] 

いつもお世話になっております。

DockPanel Suiteを使ってドッキングウィンドウの処理を実装しようとしているのですが、
フォーム内に配置したコントロールが表示されないケースがあります。
もしお詳しい方がいらっしゃったら教えていただませんでしょうか。

環境は以下の通りです。
- Windows 10 Pro (64bit)
- Visual Studio 2017 Community (C#)
- DockPanel Suite 3.0.6 (NuGetにて取得)


こちらの記事を参考にコードを書いてみました。
http://dobon.net/vb/dotnet/links/dockingwindow.html#dockpanelsuite

DockContentから派生したフォーム(Form2)には、Labelを1つ貼り付けました。
Form1へForm2を貼り付けるコードは、Form1_Load()に書きました。

> f2.Show(dockPanel1, WeifenLuo.WinFormsUI.Docking.DockState.DockLeft);

上下左右(DockLeft)を指定して表示した場合はLabelが表示されるのですが、
下記のようにDockState.Documentを指定するとLabelが表示されなくなってしまいます。

> f2.Show(dockPanel1, WeifenLuo.WinFormsUI.Docking.DockState.Document);

DockState.Documentの場合でもLabelを表示するようにしたいのですが、なにか対処方法はありますでしょうか?
よろしくお願いいたします。



[ □ Tree ] 返信 編集キー/

▲[ 89818 ] / ▼[ 89823 ]
■89821 / 1階層)  Re[1]: DockPanel Suiteでコントロールが表示されない
□投稿者/ ぼーちゃん (5回)-(2019/01/05(Sat) 16:34:17)
DockState.DocumentでもLabelコントロールは
表示されるはずですー

まずリンク先にあるように、Form1のLoadイベントハンドラなどで
this.IsMdiContainer = true;を書いていますか。

書いている場合、Labelは表示されているが
ウインドウ外に隠れてしまっているという可能性はありそうです。
LabelはForm2のデザイナで置いているのでしょうか?
試しにウインドウの一番左上にLabelを置いて、
Anchorプロパティを「Top, Left」にしても表示されないですか?
[ 親 89818 / □ Tree ] 返信 編集キー/

▲[ 89821 ] / ▼[ 89824 ]
■89823 / 2階層)  Re[2]: DockPanel Suiteでコントロールが表示されない
□投稿者/ Miki (2回)-(2019/01/05(Sat) 19:51:44)
ぼーちゃん様、ご回答ありがとうございます(^^)

> this.IsMdiContainer = true;を書いていますか。

はい、Form1_Load()の最初に書いてあります。

> LabelはForm2のデザイナで置いているのでしょうか?
> 試しにウインドウの一番左上にLabelを置いて、
> Anchorプロパティを「Top, Left」にしても表示されないですか?

デザイナーでLabelを配置しております。
AchorはLeft,Topになっており、
Locationを(0,0)に設定してみましたが、Documentの場合はなにも表示されませんでした。


いろいろやってみたのですが、
OnPaint()で以下のように書いて対角線を描画してみたのですが、Documentの場合はなにも表示されませんでした。
(DockLeft等の場合は表示されました)

> e.Graphics.DrawLine(Pens.Black, new Point(Left, Top), new Point(Right, Bottom));

また、Form2のOnClick()をオーバーライドして、クリックイベントが来るか確認しみたのですが、
DockLeft等の場合は実行されましたが、Documentの場合は実行されませんでした。

DockLeftとして初期表示した後、タイトルバードラッグでDocumentの位置に移動しても同様に表示されなかったりクリックイベントが受け取れなかったりする問題が発生しました。
その後DockLeftへ戻すと表示されクリックイベントも取得できました。
画面中央のDocumentの位置に配置したときのみ不具合が発生しているようです。


OnPaint()実行時のX,Y,Width,Heightの値は以下のようになっていました。

> Form2 - DockLeft - X:0, Y:18 Width:218 Height:493
> Form2 - Document - X:223 Y:25 Width:887 Height:513



[ 親 89818 / □ Tree ] 返信 編集キー/

▲[ 89823 ] / 返信無し
■89824 / 3階層)  Re[3]: DockPanel Suiteでコントロールが表示されない
□投稿者/ Miki (4回)-(2019/01/05(Sat) 23:14:45)
別のPC(Win10Pro(64bit), Visual Studio 2017)で同様のコードを書いて実行したらDocumentでもLabelが表示されました。

前のPCはスケーリングなどの設定を変更したので、なにか影響したのかも??

とりあえず標準的な環境であれば問題は無いと思いますので、解決済みにしたいと思います。
どうもありがとうございました。

解決済み
[ 親 89818 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -