我有一个名为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;
}
但是marquee默认情况下总是如此。如果我想关闭选框,我必须通过表单中的公共变量picturePanel1.Marquee = false
进行设置。如何在用户控件中默认使用marquee false?
答案 0 :(得分:1)
我不确定这是否就是您所说的,但如果您指的是设计器中显示的默认值,那么您只需要添加以下内容属性属性:
[DefaultValue{false)]
public bool Marquee
...
答案 1 :(得分:0)
嗯,默认情况下,布尔值总是假的。你碰巧没有一个名为marquee的局部变量?
只需在private bool marquee = false;
上设置一个断点,然后单步执行代码即可快速找到它。
答案 2 :(得分:0)
您的问题可能是当您使用设计器“绘制”窗体上的控件时,它可能正在注册MouseDown事件,将Marquee设置为true。您可以通过检查事件处理程序中的this.DesignMode
来阻止这种情况。
示例:
if (this.DesignMode) return;