如何为用户控件设置默认值?

问题描述 投票:3回答:3

我有一个名为PicturePanel的用户控件。关于鼠标事件(MouseDown,MouseMove,MouseUp),我具有以下内容:

protected override void OnMouseDown(MouseEventArgs e)
{
    if (marquee == true && e.Button == MouseButtons.Left && BackgroundImage != null)
    {
          //Code to create rectangular marquee
    }
    else
    {

    }
}

默认为类级别变量private bool marquee = false。和公开的。

private bool marquee = false;
public bool Marquee
{
    get { return marquee; }
    set { marquee = value; }
}

我什至尝试在初始化时分配false

public PicturePanel()
{
    InitializeComponent();
    marquee = false;
}

但是默认情况下,选取框始终为true。如果要关闭选取框,则必须通过表格中的公共变量picturePanel1.Marquee = false进行设置。默认情况下,如何在用户控件中将选取框设置为假?

c# .net winforms
3个回答
2
投票

我不确定这是否是您在说的,但是如果您引用的是在[[designer中看到的默认值,那么只需将以下属性添加到属性中:

[DefaultValue(false)] public bool Marquee ...

0
投票
嗯,默认情况下,布尔值始终为false。您没有碰巧是名为marquee之类的局部变量吗?

只需在private bool marquee = false;上设置一个断点并逐步执行代码,您会很快发现它。


0
投票
您的问题可能是,当您使用设计器在窗体上“绘制”控件时,它可能正在注册MouseDown事件,将Marquee设置为true。您可以通过在事件处理程序中选中this.DesignMode来防止这种情况。

示例:

if (this.DesignMode) return;

© www.soinside.com 2019 - 2024. All rights reserved.