Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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;
      }
}

дважды нажмите на поле со списком

Согласно моей копии Reflector, System.Windows.Forms.ComboBox, из сборки System.Windows.Forms, версия 2.0.0.0, ДЕЙСТВИТЕЛЬНО имеет событие DoubleClick.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top