2009-10-14 62 views
0

我有一个没有指定文本的复选框。现在,只要我选中此复选框,它就不会突出显示。我甚至尝试在checkbox_Enter()事件中设置焦点。我在这个事件中检查了重点,并且重点在这个复选框中。如何突出显示,以便用户可以知道光标在复选框中。当光标在里面时,突出显示一个胜利形式复选框

+0

我会做。谢谢指出。 – Rohit 2009-10-14 12:40:41

回答

0
  • 尝试把刚刚的空间划分的复选框

或者

  • autoSize设置为false
  • 设置的复选框

则有可能是大小用于WinForms绘制焦点ret的地方。

否则,您必须自定义绘制复选框,或自己在复选框中绘制焦点。


不管你做什么也不会看起来那么好,如用户所期望的焦点REC是圆的复选框的标签,你希望有一个不带标签的复选框。

+0

如何在复选框中放置空间。你的意思是说,在checkbox_Enter()事件中。 – Rohit 2009-10-14 12:14:01

+0

没有设置“文本”道具以包含空格。 – 2009-10-14 12:19:06

+0

可以请你告诉我如何绘制焦点矩形。我使用ControlPaint.DrawFocusRectangle(Graphics,Rectangle)。如何在checkbox_Enter()事件中获取图形。据我所知,它在OnPaint事件中可用。 – Rohit 2009-10-14 12:37:45

-1

其实亮点自带的复选框而不是复选框本身

这样的文字,如果我是你,我会把任何控制在我的复选框的背景,并给它的焦点,当我复选框重点突出,以拥有相同外观的默认控件集锦。

这将作为复选框高亮显示给最终用户。

+0

请告诉如何做到这一点。 – Rohit 2009-10-14 12:48:09

+0

-1因为将焦点赋予另一个控件将停止空格键更改复选框的值。 – 2009-10-14 12:48:39

+0

这里就是这样,把复选框后面的复选框放大一点。 然后使他的flatStyle属性平坦 和foreColor属性为您的窗体背景相同的颜色。 然后点击按钮的事件写这段代码 checkBox1.Checked =!checkBox1.Checked; *这解决了“lan Ringrose”提到的错误。 就是这样 – 2009-10-14 15:57:29

0

我设法通过后述的方式

使用panel.Push是panel.Set内的复选框做一个面板,使得它看起来像周围的checkbox.In checkbox_enter一个长方形的尺寸( )事件设置边框

BorderStyle.FixedSingle; 

而且在checkbox_Leave()事件再次设置边界

BorderStyle.None; 

所以这样它会告诉用户,重点在里面次e复选框。

0

要使复选框突出显示,我已经改变了获得焦点的颜色并改变了失去焦点。

这部分是在Form1.designer.cs:

private void InitializeComponent() 
    {... 
    ckBox1.GotFocus += new System.EventHandler(checkBox_Highlight); 
    ckBox1.LostFocus += new System.EventHandler(checkBox_EndHighlight); 
    ckBox1.MouseHover += new System.EventHandler(checkBox_Highlight); 
    ckBox1.MouseLeave += new System.EventHandler(checkBox_EndHighlight); 
    } 

这部分是在Form1:

private void checkBox_Highlight(object sender, EventArgs e) 
    { 
     CheckBox control = (CheckBox)sender; 
     control.FlatStyle = FlatStyle.Flat; 
     control.ForeColor = Color.Blue; 
    } 

    private void checkBox_EndHighlight(object sender, EventArgs e) 
    { 
     CheckBox control = (CheckBox)sender; 
     if (!control.Focused) 
     { 
      control.ForeColor = DefaultForeColor; 
     } 
    } 
0

虽然Tab键,这使上输入复选框下方的淡蓝色的影子并在离开 - 至少在我的Windows7上:

... 
    checkBox1.Enter += new System.EventHandler(check_Enter); 
    checkBox1.Leave += new System.EventHandler(check_Leave); 
    ... 

    private void check_Enter(object sender, EventArgs e) 
    { 
     ((CheckBox)sender).BackColor = SystemColors.Highlight; 
    } 

    private void check_Leave(object sender, EventArgs e) 
    { 
     ((CheckBox)sender).BackColor = Color.Transparent; 
    } 
相关问题