C # Добавление событий! - PullRequest
       15

C # Добавление событий!

0 голосов
/ 10 сентября 2009

как добавить событие двойного щелчка к элементу управления, у которого нет события двойного щелчка = P

как поле со списком !!!

Ответы [ 7 ]

6 голосов
/ 10 сентября 2009

<sarcasm> Используйте больше восклицательных знаков - это обычно делает работу! </sarcasm>

Но, серьезно, вы не можете. Попробуйте проверить простое событие «Клик» и посмотрите, достаточно ли мало времени между двумя последовательными кликами. Я не уверен, где вы можете найти систему двойного щелчка времени, хотя. Попробуйте поискать в Google.

Однако я бы серьезно подумал дважды о добавлении такого нестандартного поведения в стандартный элемент управления. Пользователи обычно не ожидают этого, поэтому они, скорее всего, будут недовольны этим. Помните - лучший пользовательский интерфейс - это тот, который предлагает пользователю меньше всего сюрпризов. Лучше подумай о другом способе сделать то, что ты пытаешься сделать.

4 голосов
/ 10 сентября 2009

На самом деле System.Windows.Forms.ComboBox имеет событие DoubleClick, оно просто скрыто от вашего редактора:

    // Summary:
    //     This event is not relevant for this class.
    [EditorBrowsable(EditorBrowsableState.Never)]
    [Browsable(false)]
    public event EventHandler DoubleClick;

Полагаю, они решили скрыть событие, потому что оно никогда не будет вызвано:)

3 голосов
/ 08 июля 2011

вы не дважды щелкаете по нему, вы делаете его похожим на дважды, если вы достаточно злы.

private void box_MouseDown(object sender, MouseEventArgs e)
{
      if (e.Button == MouseButtons.Left)
      {
         TimeSpan Current = DateTime.Now - LastClick;
         TimeSpan DblClickSpan =
         TimeSpan.FromMilliseconds(SystemInformation.DoubleClickTime);

         if (Current.TotalMilliseconds <= DblClickSpan.TotalMilliseconds)
         {
     // Code to handle double click goes here
         }

         LastClick = DateTime.Now;
      }
}

двойной клик по списку

3 голосов
/ 10 сентября 2009

Короткий ответ: Вы не .

Длинный ответ: вы подписались на событие Click и посмотрите, не было ли вызвано еще одно событие click за последние XXX миллисекунд, , как в этом сообщении .

0 голосов
/ 10 сентября 2009

Мне не удалось найти способ (учитывая, что текстовое поле съедает событие); Я также видел примечание, что двойной щелчок не имеет отношения к этому элементу управления. Я также не нашел способа захвата события из внутреннего текстового элемента управления

Возможно, вы захотите переосмыслить, почему вы хотите изменить поведение по умолчанию (а именно, выбрать текущий текст). Если вы слишком сильно измените ожидаемое поведение, ваше приложение станет намного сложнее в использовании.

0 голосов
/ 10 сентября 2009

Элемент управления TextBox внутри выпадающего списка захватывает / использует событие DoubleClick, поэтому вы должны использовать событие Click в ComboBox для прослушивания обоих щелчков?

Источник

0 голосов
/ 10 сентября 2009

Согласно моей копии Reflector, System.Windows.Forms.ComboBox, из сборки System.Windows.Forms, версия 2.0.0.0, имеет место событие DoubleClick.

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