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

わんくま同盟

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

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


■89448 / )  Re[1]: DataGridViewのカスタム列セル外表示
□投稿者/ 魔界の仮面弁士 (1958回)-(2018/11/29(Thu) 13:41:50)
No89447 (Mimio さん) に返信
> 実際に動かすとDataGridViewのCell内にパネルが表示されてしまいいます。
DataGridViewCell 継承クラスのサイズは、常にセルサイズに収まるようにします。
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/8cd309b3-b2fc-480d-80b8-9f7cf56ecf22/


> MonthCalendarやComboBoxをカスタム列型としたときに、
> 右ボタンをクリックするとセル外にカレンダやList部分が表示されるので、
ComboBox でいえば、DropDownStyle = Simple スタイルでフォームに貼った場合、
テキスト部とリスト部を合わせた領域が、そのコントロールのサイズとして扱われますよね。

一方、DropDownStyle = DropDown / DropDownList の場合、
デザイン時、コントロールのサイズにリスト部は含まれていませんよね。


実行時で比較してみると、Simple スタイルの場合は
リスト部が親コントロール(Form など)内から出られませんが、
DropDown や DropDownList スタイルの場合には
リスト部が Form からはみ出していても表示できますよね。

これは、ドロップダウンやポップアップ表示するタイプのコントロールの場合、
追加で表示される領域は、そのコントロールの一部ではなく、
別のウィンドウが表示されているためである、と考えられます。


> 何らかの設定でできるのではないかと思っています。
パネル部はセル内に配置するのではなく、新規に Form を用意し、
そこに移動してみてください。
このフォームの TopLevel プロパティは false にしておきます(既定で false です)。

そして、TimeSpan セルがパネル入力モードになった段階で、
この子フォームを表示するようなコードを記述し、フォーカスをそこに移します。

あとは、コントロールからフォーカスが Leave したときに
そのフォームが消えるようにすれば、
ドロップダウンスタイルと同じ見た目になるかと。
返信 編集キー/


管理者用

- Child Tree -