当前位置: 首页 > 编程语言 > C#

c#WinForm:删除或自定义按钮的“焦点矩形”Share

时间:2023-04-10 22:44:35 C#

c#WinForm:删除或自定义按钮的“焦点矩形”(那条虚线看起来像Windows95ish)我注意到控件属性(对于按钮)没有设置ownerdrawfixed(我不知道这是否是用于解决方案的路径,尽管我已经看到它曾经用于自定义其他控件)。做到这一点比听起来更棘手。毫无疑问,自定义按钮绘图不可覆盖的原因之一。这按预期工作:使用系统;使用系统绘图;使用System.Windows.Forms;使用System.Windows.Forms.VisualStyles;类MyButton:按钮{私有VisualStyleRenderer渲染器;protectedoverridevoidOnPaint(PaintEventArgse){base.OnPaint(e);if(this.Focused&&Application.RenderWithVisualStyles&&this.FlatStyle==FlatStyle.Standard){if(renderer==null){VisualStyleElementelem=VisualStyleElement.Button.PushButton.Normal;renderer=newVisualStyleRenderer(elem.ClassName,elem.Part,(int)PushButtonState.Normal);}矩形rc=renderer.GetBackgroundContentRectangle(e.Graphics,newRectangle(0,0,this.Width,this.Height));rc.Height--;rc.宽度--;使用(Penp=newPen(Brushes.DarkGray)){e.Graphics.DrawRectangle(p,rc);}}}}一起禁用焦点矩形的一种快速简便的方法是将控件子类化并包括以下代码:}}}只是简单的方法。设置button.FlatStyle=Flat;button.FlatAppearance.BorderColor=Color.FromArgb(0,255,255,255);button.FlatAppearance.BorderSize=0;按钮.TabStop=false;接下来设置透明色。Button类的子类并覆盖OnPaint。如果您的覆盖不调用base.OnPaint,则不会为按钮绘制任何内容,您将拥有完全控制权(包括焦点矩形)。我发现的一个快速/肮脏的解决方案(只是为了删除焦点矩形)明确定义了背景颜色。对于默认控件颜色,eg:this._dropDownButton.BackColor=System.Drawing.ColorTranslator.FromHtml("#F0F0F0");编辑:显然这不起作用。出于不相关的原因,我的案子正在得到解决。道歉。以上就是C#学习教程分享的全部内容:c#WinForm:删除或自定义按钮的'焦点矩形'。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: