C#Winform ToolStripContainer ToolStrip関連用法記録

3306 ワード

VSを使ったことがあるのはすべて知っていて、上部は多くのツールバーがあって、隠すことを表示することができて、引きずって引きずることができます.これはwinformではToolStripContainerで実現されています.どのように使うか、ネット上の投稿は多く、ここに私が穴をあけた場所を記録します.
1、toolstripContainerの高さはtoolstripのドラッグによって変化する.つまり、toolstripツールバーの前に2行が並んでいたが、今は1行にドラッグしている.このとき、何も処理しなければ、toolstripContainerの高さはそのままで、空白があり、見ていると違和感がある.ネットで長い間探していたが、実がなかった.その後、自分でデバッグしたところ、TopToolStripPanelでSizeChangedイベントにコードを1行追加すれば完了です.
private void toolStripContainer1_TopToolStripPanel_SizeChanged(object sender, EventArgs e)
        {
            toolStripContainer1.Height = toolStripContainer1.TopToolStripPanel.Height;
        }

私はTopToolStripPanelだけで、他のPanelは隠れていて、使いませんでした.
2、どのようにプログラムを譲る時、ToolStripContainerは1行のtoolstripしかありません.このネット上でも、ブログの園人が質問して、後で解決したと言ったが、解決策が出なかったので、酔っ払ったと言った.
ステップ2:a、ツールバーをToolStripContainer,TopToolStripPanelに追加する.SizeChangedイベントでContainerの高さを設定します.
b、toolstripごとのlocationをそれぞれ設定します.このステップはフォームShownイベントで行うことに注意してください.(usercontrolを使用する場合は、関数を構築します).
必ずaは前に、bは後に.手動でLocationを調整し、少しデバッグすればいいという考え方です.
ツールバーはUserControlに入れました.
      //         ,        ( toolStrip1    ),          。

            ZtoolStripContainerMain.TopToolStripPanel.Controls.Add(toolStrip2);            ZtoolStripContainerMain.TopToolStripPanel.Controls.Add(toolStrip1);                        ZtoolStripContainerMain.ContentPanel.Visible = false;            toolItemMapGeneric.Checked = toolStrip1.Visible;            toolItemBusiness1.Checked = toolStrip2.Visible;            ZtoolStripContainerMain.TopToolStripPanel.ContextMenuStrip = menuToolStrip;            ZtoolStripContainerMain.TopToolStripPanel.SizeChanged += delegate//(object o,EventArgs e)            {                if (ZtoolStripContainerMain.TopToolStripPanel.Height > 0)                {                    ZtoolStripContainerMain.Height = ZtoolStripContainerMain.TopToolStripPanel.Height;                }            };            menuToolStrip.ItemClicked += (o, e) =>                {                    bool ischecked = (e.ClickedItem as ToolStripMenuItem).Checked;                    int visibleCnt = 0;                    foreach (Control item in ZtoolStripContainerMain.TopToolStripPanel.Controls)                    {                        if (item.Visible)                        {                            visibleCnt++;}}//少なくとも1つのツールバーが存在する必要があります.ツールバーが0の場合、toolStripContainerの右クリックイベントは無効になります.                    if (toolStrip1.DisplayRectangle.Height == ZtoolStripContainerMain.Height &&                        ischecked && visibleCnt == 1)                    {                        return;}if(e.ClickedItem.Text=="地図基本ツール"){ischecked=toolStrip 1.Visible=!toolStrip 1.Visible;}else if(e.ClickedItem.Text=="ビジネスツール"){ischecked=toolStrip 2.Visible=!toolStrip 2.Visible;                    }                    (e.ClickedItem as ToolStripMenuItem).Checked = ischecked;                };//ロードしたばかりのときに、2本のツールバーが1行(toolStrip 1が前に並んでいる)になるように、ここでの設定順序は変更できません.
            toolStrip1.Location = new System.Drawing.Point(0, 0);
            toolStrip2.Location = new System.Drawing.Point(toolStrip1.Width, 0);