C#的toolstrip中添加的按钮如何显示边框,向添加的button按钮边框控件一样有边框。

让工具栏ToolStrip能触发焦点控件的验证 - ahdung - 推酷
让工具栏ToolStrip能触发焦点控件的验证 - ahdung
如题,Winform码农大概都知道这样一个问题,就是当输入焦点仍处在TextBox、DataGridViewCell等控件中时,如果单击普通Button、CheckBox等控件,那么该验证的会得到验证,该提交的会提交,该报错的会报错,该被阻止的操作会被阻止。但如果单击的是工具栏上的项目(如ToolStripButton,之所以说项目而不是控件,你懂的),是不会触发焦点控件的验证事件的,而是会直接执行按钮事件,这样带来的影响相信大家深有体会。总之不解决ToolStrip的这个问题我不会幸福。先看办法:
/// &summary&
/// 工具栏(无右侧竖线、无手柄、可触发其它控件验证)
/// &/summary&
public class ToolStripEx : ToolStrip
readonly B//定义一个用来转移焦点的控件,如Button
public ToolStripEx()
//初始化并指定控件尺寸为0,0。因为你不会希望这个按钮被看到
btn = new Button { Width = 0, Height = 0 };
//下面为可选项
//让工具栏在视觉上更地道。如被按下的ToolStripButton更明显,否则只有一个惨淡的线框
ToolStripManager.VisualStylesEnabled = false;
//不显示拖曳抓柄
GripStyle = ToolStripGripStyle.H
//在工具栏获得句柄后将控件添加进窗体,之所以不在构造函数中做这事是因为那个时候窗体也许还是null
protected override void OnHandleCreated(EventArgs e)
base.OnHandleCreated(e);
Form fm = this.FindForm();
if (fm != null) { fm.Controls.Add(btn); }//这样添加后,btn.Location会是0,0
//在工具栏被碰到时(其实选用其它类似事件也行)将焦点转移到btn上,以此触发焦点控件的验证
//注意虽然是工具栏的Click,但经过实践点击其中的子项都会优先触发该事件
//所以当焦点控件验证通不过时,不会再执行子项的Click事件,这一点我想是由win32消息机制实现的
protected override void OnClick(EventArgs e)
base.OnClick(e);
btn.Focus();
//可选。把工具栏最右边的1px竖线K掉,这种瑕疵对于我来说简直不能忍受,草泥马微软,有病
protected override void OnPaint(PaintEventArgs e)
e.Graphics.SetClip(new Rectangle(0, 0, Width - 1, Height));
base.OnPaint(e);
办法很简单,就是在点击工具栏时先把焦点移到其它能正常获得焦点的控件上,以此来触发先前控件的Leave/Validating/DataError等事件。
其实为了解决这个问题我颇费了一番周折,最开始想到的其实就是这招,但觉得猥琐了点,作为一个有追求的码农,我认为应该从消息层面去解决,所以一开始就把这个阴招放在一边,专心捣鼓消息。开始我认为这个问题的本质是因为,工具栏就像Panel之类的控件,是得不到焦点的控件,不像Button之流,能够让其他控件的焦点转移过来,所以才有这个问题。那么我就想通过调用win32 API,让工具栏能发出与Button一样的消息,让焦点控件受骗,以为点到的是Button,从而验证自己的数据,移交自己的焦点。经过多番实践,确实让工具栏获得了焦点,让焦点控件失去焦点,用Spy++看焦点控件接收到的消息也与点击Button接收到的消息看起来一样了,但仍然不会触发验证,这就扯蛋了~我那个沮丧啊。BTW~其实给工具栏设置SetStyle(ControlStyles.Selectable, true)也可以达到同样目的,但一样解决不了问题。
也许是还没摸透问题的本质,也许是win32消息还是玩不转~总之是经历过若干次失败的尝试,我不得不放弃高大上的解决办法,这才回头来重新拾起猥琐方案,所以文中办法其实是妥协的结果,难免心有不甘,等他日机缘到了,我定再次尝试“正统”的解决办法。如有路过高人点拨,感激不尽!
ahdung阅读(
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致c#中(winform)如何去掉button边框颜色?_百度知道Winm的话,设置FlatStyle为Flat,并且设置FlatAppearance下的BorderSize为0
这么设置也不好使 啊
--------------------------------------
class CButton:Control{
}自己绘制吧。。
--------------------------------------
恩 WINFOEM 没有CSS
建议 做个没有边框的BUTTON的 然后 IF CLICK 就换成图片
--------------------------------------
那意思是就没别的方法了?咋样绘制我不会啊
--------------------------------------
最简单就是用个 PictureBox
添加一个OnClick事件就行了
--------------------------------------
用一个LABEL添加CLICK事件吧..效果一样的
--------------------------------------
同2楼,可以先画出你想要的button的图片(包括MouseDown状态时button的图片),再用picturebox添加到窗体,再添加pictureBox1_MouseDown、pictureBox1_MouseUp事件就行了。
--------------------------------------
PictureBox
--------------------------------------
皮肤控件,CSDN有下
--------------------------------------
PictureBox
我也用这个的
--------------------------------------
楼主找到好的解决办法了吗
--------------------------------------
1.这种做法能够实现单色的,非系统样式的按钮C# code
this.button2.FlatStyle = ..Forms.FlatStyle.F
this.button2.FlatAppearance.BorderSize = 0;
this.button2.BackColor = Color.R
this.button2.FlatAppearance.BorderColor = this.button2.BackC2.这种做法能够通过重绘去掉边框,但是比较粗糙,如果想的话自己按照这个思路再完善一下C# code class newbtn : System.Windows.Forms.Button //继承之系统按钮控件
protected override void>//重写
base.OnPaint(e);
System.Drawing.Pen pen = new Pen(this.BackColor, 5);
e.Graphics.DrawRectangle(pen, 0, 0, this.Width, this.Height);//填充
pen.Dispose();
--------------------------------------
用个无边框的button,然后填个图片或者背景图
--------------------------------------
this.button2.BackColor = Color.Rc# toolStrip中的按钮toolStripButton设置图片有关问题 - C#当前位置:& &&&c# toolStrip中的按钮toolStripButton设置图片有关c# toolStrip中的按钮toolStripButton设置图片有关问题&&网友分享于:&&浏览:196次c# toolStrip中的按钮toolStripButton设置图片问题toolStripButton设置成图片,但是还想在图片下方显示文字,就是上面是图,下面是文字,怎么设置??
------解决方案--------------------设置toolStripButton的DisplayStyle属性为ImageAndText
并设置toolStripButton1TextImageRelation属性为ImageAboveText
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有C#的toolstrip中添加的按钮如何显示边框,向添加的button控件一样有边框。_百度知道

我要回帖

更多关于 c toolstrip 边框 的文章

 

随机推荐