当前位置:首页> 正文

c#中 (ToolStrip

c#中 (ToolStrip

本文目录

  • c#中 (ToolStrip)控件是做什么用的
  • winform窗体问题 toolstrip怎么重用,每个窗体都要用到同样的工具栏
  • 窗体中怎么让toolstrip漂浮(停靠已经做出来了)(C#)
  • C# 怎么控制toolStrip长短,那个size不起作用哦
  • C# 窗体中 toolstrip控件下面有白边 怎么去掉
  • .Net中,toolBar / toolStrip 和 panel 有什么区别
  • 工具栏ToolStrip中图标的大小怎么改变
  • C#中toolstrip控件的按钮分布问题,toolstrip横向的但是我需要在其中设置三个上下并列的按钮,求指教!
  • winform工具栏中toolstrip按钮图像无法适应按钮控件大小,怎么办

c#中 (ToolStrip)控件是做什么用的


拖过来,在上面有个小箭头可以添加Button,Label什么的,当然也可以为Button添加ICON(像写字板的新建,保存图片一样),之后就是那它们的事件,事件里调用方法什么的.主要是方便用户使用.

winform窗体问题 toolstrip怎么重用,每个窗体都要用到同样的工具栏


新建一个类,名称为MyToolStrip。添加一条using语句:
using System.Windows.Forms;
修改类定义以继承ToolStrip类,将
class MyToolStrip {
改为
class MyToolStrip : ToolStrip {
保存,关闭MyToolStrip.cs,再次打开。此时打开的是设计视图,打开属性窗口。
现在,更改属性窗口的Items属性和其它属性可以更改MyToolStrip。
使用:要先生成解决方案,然后在需要用ToolStrip的窗体中打开工具箱,可以找到你的MyToolStrip。拖出来,其它操作都一样。

窗体中怎么让toolstrip漂浮(停靠已经做出来了)(C#)


  DotNet2.0开发框架中提供的ToolStrip和ToolStripPanel控件可以方便开发具有可停靠工具栏功能的Windows应用程序, ToolStrip对象可以在各个ToolStripPanel间完成拖拽停靠,但是如果想实现类似VS IDE 或Office中可以浮动的工具栏必须借助于DevExpress等一些第三方的控件或编写一定的代码。 这里介绍一种比较简单的方法,只需继承ToolStrip类即可实现上述的效果。
  放置到ToolStripPanel上的,当工具栏浮动的时候,事实上是改变了其所在的容器对象,从其所在的ToolStripPanel移动到一个漂浮的容器上,因此要实现工具栏的浮动必须解决以下两个问题:
    必须有一个浮动的容器来承载ToolStrip对象。
    须知道ToolStrip对象何时改变其所在的容器,即在浮动的容器和主窗口上ToolStripPanel之间停靠。
  对于第一个问题,我们的解决方案是动态的创建一个Form类作为浮动的容器,命名为ToolStripFloatWindow,该Form对象具有以下的属性:
    FormBorderStyle = FixedToolWindow 边框样式
    ShowInTaskbar = false 不在任务栏显示
    ShowIcon = false 不显示窗口图标
    TopMost = true 在所有窗口之上
  为了解决第二个问题,我们查阅MSDN获知,当用鼠标拖拽ToolStrip对象释放鼠标时会触发其EndDrag事件。 我们在这个事件的处理方法中判断当ToolStrip对象的位置被移动到所在的ToolStripPanel之外的时候,创建ToolStripFloatWindow对象,并将ToolStrip对象移动到ToolStripFloatWindow上;要使ToolStrip对象恢复到原来的窗体上只要判断ToolStripFloatWindow对象的位置是否移动到了ToolStripPanel上, 当条件满足时将ToolStrip对象移动回ToolStripPanel中并销毁ToolStripFloatWindow对象。
  此外,还要解决当ToolStrip对象放置到ToolStripFloatWindow对象上时, ToolStripFloatWindow对象必须与ToolStrip对象的尺寸一致。 还有ToolStripFloatWindow对象被点击了关闭按钮时不能将自己关闭。我们可以做两个类来实现上述的思路。
ToolStripFloatWindow类继承自Form类。
MyToolStrip 继承自ToolStrip类。增加了相应的属性和方法。
MyToolStrip类的源代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace FloatingToolStrip
...{
public partial class MyToolStrip : ToolStrip
...{
public MyToolStrip()
...{
InitializeComponent();
this.EndDrag += new EventHandler(MyToolStrip_EndDrag);
this.SizeChanged += new EventHandler(MyToolStrip_SizeChanged);
}
protected override void OnPaint(PaintEventArgs pe)
...{
// TODO: 在此处添加自定义绘制代码
// 调用基类 OnPaint
base.OnPaint(pe);
}
  漂浮状态#region 漂浮状态
private ToolStripFloatWindow floatWindow;
public ToolStripFloatWindow FloatWindow
...{
get
...{
return this.floatWindow;
}
set
...{
floatWindow = value;
if (FloatWindow != null)
...{
floatWindow.LocationChanged += new EventHandler(floatWindow_LocationChanged);
floatWindow.FormClosing += new FormClosingEventHandler(floatWindow_FormClosing);
}
}
}
public bool isFloating
...{
get
...{
return (floatWindow != null);
}
}
private ToolStripPanel tsPanel;
public ToolStripPanel ToolStripPanel
...{
get
...{
return this.tsPanel;
}
set
...{
tsPanel = value;
}
}
#endregion
  漂浮实现#region 漂浮实现
private void floatWindow_LocationChanged(object sender, EventArgs e)
...{
//当floatwindws的位置移动到 toolstrippanel中时,将this放置到 toolstripPanel上
if (this.floatWindow == null)
...{
return;
}
Point currentPt = new Point(floatWindow.Location.X, floatWindow.Location.Y);
Point minpt = this.tsPanel.PointToScreen(tsPanel.Location);
Point maxpt;
if(this.tsPanel.Height 《= 20)...{
maxpt = new Point(minpt.X + this.tsPanel.Width, minpt.Y + 20);
}else...{
maxpt = new Point(minpt.X + this.tsPanel.Width, minpt.Y + this.tsPanel.Height);
}
if ((currentPt.X 》 minpt.X) && (currentPt.X 《 maxpt.X) && (currentPt.Y 》 minpt.Y) && (currentPt.Y 《 maxpt.Y))
...{
this.floatWindow.Controls.Remove(this);
this.tsPanel.SuspendLayout();
this.tsPanel.Controls.Add(this);
this.Location = this.tsPanel.PointToClient(currentPt);
this.tsPanel.ResumeLayout();
this.floatWindow.Dispose();
this.floatWindow = null;
}
}
private void MyToolStrip_EndDrag(object sender, EventArgs e)
...{
//判断移出时
if (this.tsPanel == null)
...{
MessageBox.Show(“请先设置ToolStripPanel属性“);
return;
}
Point endPoint = Cursor.Position;
int openX, openY;
openX = endPoint.X;
openY = endPoint.Y;
Point clientPt = this.tsPanel.Parent.PointToClient(endPoint);
if (clientPt.Y 》 tsPanel.Height)
...{
ToolStripFloatWindow fw = new ToolStripFloatWindow();
this.tsPanel.Controls.Remove(this);
fw.Controls.Add(this);
this.Left = 0;
this.Top = 0;
this.FloatWindow = fw;
Point newLoc = new Point(openX, openY);
fw.Show();
fw.Location = newLoc;
fw.SetBounds(newLoc.X, newLoc.Y, this.ClientSize.Width, this.ClientSize.Height);
}
}
private void floatWindow_FormClosing(object sender, FormClosingEventArgs e)
...{
e.Cancel = true;
}
private void MyToolStrip_SizeChanged(object sender, EventArgs e)
...{
if (this.isFloating)
...{
this.floatWindow.Width = this.ClientSize.Width;
}
}
#endregion
}
}
结论。 该方法实现较简单, 当不愿意使用功能较强大的第三方控件库时可以采用这种方法,缺点是负责浮动的容器是一个窗口,不大美观。

C# 怎么控制toolStrip长短,那个size不起作用哦


你把toolStrip 的dock属性设置成设置成none 同时把AutoSize属性设置为false 就可以用size来控制toolStrip的长短了,关于他的位置你可以用Anchor来控制。
当然,dock属性为none后,toolStrip可能会挡在子窗体前面,你用一个panel设置其dock属性为top,然后在这个panel中加入那个toolStrip ,来模仿原toolStrip 的top效果。
搞定 ^-^

C# 窗体中 toolstrip控件下面有白边 怎么去掉


使用toolstrip时,先将RenderMode设置为System,因为无法通过基本的设置属性除去;
只需要重绘一下toolstrip即可,C#源代码如下:
//toolstrip重绘
private void toolStrip1_Paint(object sender, PaintEventArgs e)
{
if ((sender as ToolStrip).RenderMode == ToolStripRenderMode.System)
{
Rectangle rect = new Rectangle(0, 0, this.toolStrip1.Width-8, this.toolStrip1.Height-8);
e.Graphics.SetClip(rect);
}
}
右键点击toolstrip1控件 选中属性最上方的event 把toolstrip的重绘事件为这个就OK了(将控件的Paint事件选择toolStrip1_Paint).....

.Net中,toolBar / toolStrip 和 panel 有什么区别


toolBar是以按钮为主的工具栏,一般在窗体的标题栏正下方,toolstrip是窗体的侧边工具栏,比如IE下方的那一条功能栏,panel是一个容器,是用来存放其他子控件或者容器的,其中toolbar和toolstrip比较接近,panel和前两者用途完全不同

工具栏ToolStrip中图标的大小怎么改变


该不是想实现鼠标悬停时图标变大吧。
这样写:
toolStripButton1.ImageScaling = ToolStripItemImageScaling.None;
此属性默认是SizeToFit,也就是自动将图标图像缩放到toolStrip合适的大小,
这个数值在toolStrip的AutoSize为false且自己指定了toolStrip的长宽时用比较合适。而None则是指示图标使用原始大小的Image,如果Image高过/宽过toolStrip,超出部分不可见。
所以在运行时想放大图标图像的话,你还需要准备一个大小比较合适的Image。
举例,系统默认添加toolStrip高度是25,你可以关闭toolStrip的AutoSize然后调整高度到31,图标都使用24x24的,当SizeToFit时它会变成16x16的,当需要放大时,改这个项的ImageScaling到None就会还原回24x24。
最后,布局最好配合toolStrip的Padding和LayoutStyle属性来做。
最后的最后,如果想要任意换图标……还是改了ImageScaling后自己找几组大小不同的图标,需要的时候写给子项的Image属性好了。

C#中toolstrip控件的按钮分布问题,toolstrip横向的但是我需要在其中设置三个上下并列的按钮,求指教!


你看看这样行么

你在toolstrip控件上选择LayoutStyle,在Items属性下面,选Flow。

然后,选择你那三个Button中的第二个Button,设置它的Margin为-23,22,0,0

再选择第三个Button,设置它的Margin为-23,44,0,0就行了

这个23就是第一个Button的宽度,而22就是Button的高度+2


winform工具栏中toolstrip按钮图像无法适应按钮控件大小,怎么办


正确的设置方法:

设置 toolstrip 的 ImageScalingSize 设为你想要的大小,例如: 32 , 32

其他的设置全部使用默认值

记得要设置 ToolStrip 本身,不是 ToolStrip 上面的button

展开全文阅读

相关内容