C# Winform ToolStripContainer ToolStrip相关用法记录
来源:互联网 发布:mac清歌输入法联想词 编辑:程序博客网 时间:2024/05/04 23:34
用过VS的都知道,顶部有很多工具条,可以显示隐藏,也可以拖来拖去。这个在winform里面就是用ToolStripContainer实现的。如何使用,网上帖子多得是,这里记录一下我被坑的地方。
1、ToolStripContainer的高度随着toolstrip的拖动发生变化,也就是说,当toolstrip工具条之前是两行排列,现在拖为一行,这时如果不做任何处理,ToolStripContainer的高度仍然保持原样,有一片空白,看着很是别扭。网上找了很久,无果。后来自己调试发现,在TopToolStripPanel_SizeChanged事件里面添加一行代码就搞定啦。
<span style="font-size:12px;color:#333399;">private void toolStripContainer1_TopToolStripPanel_SizeChanged(object sender, EventArgs e) { toolStripContainer1.Height = toolStripContainer1.TopToolStripPanel.Height; }</span>我只要TopToolStripPanel,其他的Panel都隐藏了,没用到。
2、如何让程序的时候,ToolStripContainer只有一行toolstrip。这个网上也没说,博客园人提问,后来说解决了,但又没晒出解决办法,我表示醉了!
分两步:a、添加工具条进ToolStripContainer,TopToolStripPanel.SizeChanged事件里面设置Container高度。
b、分别设置每个toolstrip的location。注意这步要在窗体Shown事件里面做。(如果是用usercontrol,在构造函数)。
务必a在前,b在后。思路就是手动调整Location,稍加调试即可。
工具条我是放到UserControl里面的:
<span style="font-size:12px;"> <span style="color:#333399;"> //为了使刚加载的时候,两根工具条在一行(且toolStrip1排在前面),这里的添加顺序不能换。</span></span>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++;
}
}
//至少要有一个工具条存在,因为工具条为0的时候,toolStripContainer右键点击事件失效。
if (toolStrip1.DisplayRectangle.Height == ZtoolStripContainerMain.Height &&
ischecked && visibleCnt == 1)
{
return;
}
if (e.ClickedItem.Text == "地图基本工具")
{
ischecked = toolStrip1.Visible = !toolStrip1.Visible;
}
else if (e.ClickedItem.Text == "业务工具")
{
ischecked = toolStrip2.Visible = !toolStrip2.Visible;
}
(e.ClickedItem as ToolStripMenuItem).Checked = ischecked;
};
//为了使刚加载的时候,两根工具条在一行(且toolStrip1排在前面),这里的设置顺序不能换。
toolStrip1.Location = new System.Drawing.Point(0, 0);
toolStrip2.Location = new System.Drawing.Point(toolStrip1.Width, 0);
- C# Winform ToolStripContainer ToolStrip相关用法记录
- C# WinForm绘图相关
- c#1winform相关
- C#中的toolStrip控件
- C# 工具栏ToolStrip
- C# winform backgroundWorker用法
- c# winForm 资源文件 相关
- c# winForm 资源文件 相关
- ToolStrip和ToolStripButton的用法
- WinForm ToolStrip添加DateTimePicker日历控件
- 还是c#的toolstrip简单
- 记录Spinner相关用法
- C# winform对话框用法大全
- C# winform对话框用法大全
- C# winform中ListView用法
- C# winform中ListView用法
- C# winform中ListView用法
- C# winform中ListView用法
- 检查MySQL的健康状况
- 线程,定时任务
- Hadoop DistributedCache详解
- 自己动手写 android 数据库(2)
- Android dispatchTouchEvent介绍-转载51job
- C# Winform ToolStripContainer ToolStrip相关用法记录
- jsp中一些内置对象的知识
- urlrewrite 地址重写
- java.sql.SQLException: Incorrect string value
- Spring + JdbcTemplate + JdbcDaoSupport + HibernateDaoSupport examples
- Android窗口背景的优化
- 神经网络-神文
- 欢迎使用CSDN-markdown编辑器
- java工程转web eclipse tomcat下工程不启动