15

さまざまなデータ マスクを含む複数のパネルを処理する必要があります。各パネルは、TreeView コントロールを使用して表示されます。

この時点で、選択したパネルを表示して一番上に表示することで、パネルの表示を手動で処理します。

実際、これは特に UI デザイナーではあまり快適ではありません。新しいパネルを追加するときは、すべてのパネルのサイズを変更してからデザインする必要があるためです...

適切な解決策は、TabControl を使用することであり、各パネルは TabPage に含まれています。しかし、項目を選択するための TreeView が既にあるため、TabControl ボタンを非表示にする方法が見つかりません。

別の解決策は、スタックを使用してパネルを配置する ipotethic "StackPanelControl" ですが、どこにも見つかりませんでした。

この種の UI を処理するための最適なソリューションは何ですか?

4

2 に答える 2

27

Win32 API マジックが少し必要です。タブ コントロールは TCM_ADJUSTRECT メッセージを送信して、アプリがタブ サイズを調整できるようにします。プロジェクトに新しいクラスを追加し、以下に示すコードを貼り付けます。コンパイル。ツールボックスの上部から新しいコントロールをフォームにドロップします。

タブは設計時に表示されるので、ページを簡単に切り替えることができます。タブは実行時に非表示になります。「ビュー」を切り替えるには、SelectedIndex または SelectedTab プロパティを使用します。

using System;
using System.Windows.Forms;

class StackPanel : TabControl {
  protected override void WndProc(ref Message m) {
    // Hide tabs by trapping the TCM_ADJUSTRECT message
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
    else base.WndProc(ref m);
  }
}
于 2010-05-09T16:04:06.960 に答える