我想在 DropDownList中的Winform Combobox上禁用Focus Cue
,但似乎和其他控件一样不容易。
我知道如何禁用“拆分容器”或“按钮”上的焦点提示,但是我找不到在组合框内执行相同操作的方法。
是这样的:
ComboBoxRenderer
也无法继承,如何解决?
答案 0 :(得分:0)
选中此{strong> Amazing Piece of Code ,并提供by Max
伙计是一个真正的天才,我建议您检查一下他的其他答案,您可以学到很多东西:)
此处是修复代码:
public class ComboBoxEx : ComboBox
{
public ComboBoxEx()
{
base.DropDownStyle = ComboBoxStyle.DropDownList;
base.DrawMode = DrawMode.OwnerDrawFixed;
}
protected override void OnDrawItem(DrawItemEventArgs e)
{
e.DrawBackground();
if(e.State == DrawItemState.Focus)
e.DrawFocusRectangle();
var index = e.Index;
if(index < 0 || index >= Items.Count) return;
var item = Items[index];
string text = (item == null)?"(null)":item.ToString();
using(var brush = new SolidBrush(e.ForeColor))
{
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
e.Graphics.DrawString(text, e.Font, brush, e.Bounds);
}
}
}
答案 1 :(得分:-1)
使用此代码:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.Focus();
}
}
}
祝你好运!