Как установить значения по умолчанию для пользовательского элемента управления? - PullRequest
2 голосов
/ 26 октября 2011

Я получил пользовательский элемент управления под названием 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;
}

Но выделение всегда верно по умолчанию. Если я хочу отключить выделение, я должен установить его через открытую переменную picturePanel1.Marquee = false в форме. Как я могу сделать отступ ложным по умолчанию в пользовательском элементе управления?

Ответы [ 3 ]

1 голос
/ 26 октября 2011

Я не уверен, что это то, о чем вы говорите, но если вы ссылаетесь на значение по умолчанию, которое вы видите в конструкторе , то вам просто нужно добавить следующий атрибутв вашу собственность:

[DefaultValue{false)]
public bool Marquee
...
0 голосов
/ 26 октября 2011

Ваша проблема может заключаться в том, что когда вы используете дизайнер для «рисования» элемента управления в форме, он может регистрировать событие MouseDown, устанавливая для Marquee значение true. Вы можете предотвратить это, установив this.DesignMode в своем обработчике событий.

Пример:

if (this.DesignMode) return;
0 голосов
/ 26 октября 2011

Ну, булевы значения по умолчанию всегда ложны. У вас случайно нет локальной переменной с именем marquee или что-то еще?

Просто установите точку останова на private bool marquee = false; и пройдитесь по своему коду, и вы найдете его довольно быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...