C#Winform ToolStripContainer ToolStrip関連用法記録
3306 ワード
VSを使ったことがあるのはすべて知っていて、上部は多くのツールバーがあって、隠すことを表示することができて、引きずって引きずることができます.これはwinformではToolStripContainerで実現されています.どのように使うか、ネット上の投稿は多く、ここに私が穴をあけた場所を記録します.
1、toolstripContainerの高さはtoolstripのドラッグによって変化する.つまり、toolstripツールバーの前に2行が並んでいたが、今は1行にドラッグしている.このとき、何も処理しなければ、toolstripContainerの高さはそのままで、空白があり、見ていると違和感がある.ネットで長い間探していたが、実がなかった.その後、自分でデバッグしたところ、TopToolStripPanelでSizeChangedイベントにコードを1行追加すれば完了です.
私はTopToolStripPanelだけで、他のPanelは隠れていて、使いませんでした.
2、どのようにプログラムを譲る時、ToolStripContainerは1行のtoolstripしかありません.このネット上でも、ブログの園人が質問して、後で解決したと言ったが、解決策が出なかったので、酔っ払ったと言った.
ステップ2:a、ツールバーをToolStripContainer,TopToolStripPanelに追加する.SizeChangedイベントでContainerの高さを設定します.
b、toolstripごとのlocationをそれぞれ設定します.このステップはフォームShownイベントで行うことに注意してください.(usercontrolを使用する場合は、関数を構築します).
必ずaは前に、bは後に.手動でLocationを調整し、少しデバッグすればいいという考え方です.
ツールバーはUserControlに入れました.
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);
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);