【问题标题】:Restrict clickable area of a checkbox control in winforms限制winforms中复选框控件的可点击区域
【发布时间】:2014-03-31 11:18:19
【问题描述】:

我创建了一个自定义复选框控件并从 System.Windows.Forms.CheckBox 继承了类。我将此控件的停靠属性设置为 Top。我在控件中添加了一些文本。控件有一些空白空间。现在,如果单击空白区域,则此复选框正在工作。我需要限制可点击区域的空白空间。

以下是我尝试过的,

public class MyCheckBox : System.Windows.Forms.CheckBox
{
    private int boxWidth = 15;

    protected override void OnClick(EventArgs e)
    {
        Point mouseLocation = this.PointToClient(Control.MousePosition);
        if (mouseLocation.X > boxWidth)
            return;

        base.OnClick(e);
    }
}

单击复选框控件的框时,这可以正常工作。但我也需要将文本区域添加到可点击区域。

【问题讨论】:

  • 分享你的尝试。

标签: c# winforms


【解决方案1】:

如果您希望您的用户玩“复选框狙击手”(可点击区域很大是有原因的),您可以考虑只放置一个不带文本的复选框,将其调整为尽可能小的尺寸并使用单独的标签显示文本.

【讨论】:

    【解决方案2】:

    如果您不希望空白区域“可点击”,请不要将其停靠在表单顶部。如果您将标准的CheckBox 停靠在顶部,您将看到相同的效果。点击区域变成了表单的整个宽度。

    只需将控件放在屏幕顶部,将Dock 设置为None

    或将Panel 停靠在屏幕顶部,然后将您的自定义CheckBox 控件放在其中。

    【讨论】:

    • 感谢您写格兰特,
    • 文本可能会动态变化,长度也会发生变化。所以大小不能设置为固定的。这就是我将停靠属性设置为 Top 的原因。
    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2010-09-27
    • 1970-01-01
    相关资源
    最近更新 更多