Скопируйте элемент из одного списка в другой по двойному щелчку. Событие двойного клика не сработало. Winform C # - PullRequest
1 голос
/ 24 ноября 2011

Я новичок в Winform dev.У меня есть два списка.Когда пользователь дважды щелкает элемент в первом списке, я хочу, чтобы он был скопирован во второй список.Проблема в том, что мой метод двойного щелчка никогда не срабатывает.вот мой код:

//here I register the event
this.fieldsArea.MouseDoubleClick += new MouseEventHandler(fieldsArea_MouseDoubleClick);

Тогда вот метод двойного щелчка:

    private void fieldsArea_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        MessageBox.Show("from method");
        int index = fieldsArea.IndexFromPoint(e.Location);
        string s = fieldsArea.Items[index].ToString();

        selectedFieldsArea.Items.Add(s);
    }

Поэтому я хочу, чтобы элемент из fieldsArea был скопирован в selectedFieldsArea ... Окно сообщения никогда не отображаетсяв отладке я вижу, что я никогда не вхожу в этот метод ... Я что-то здесь упускаю?

ps: у меня реализовано перетаскивание, которое работает хорошо.Проблема возникает из-за реализации события MouseDown.Так вот мое моуздаун событие.

private void fieldsArea_MouseDown(object sender, MouseEventArgs e)
    {
        if (fieldsArea.Items.Count == 0)
            return;
        int index = fieldsArea.IndexFromPoint(e.Location);
        string s = fieldsArea.Items[index].ToString();
        DragDropEffects dde1 = DoDragDrop(s,
            DragDropEffects.All);
    }

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

ps: у меня реализовано перетаскивание, которое работает хорошо.

Это, вероятно, означает, что вы зарегистрировали событие MouseDown, которое мешает MouseDoubleclick.

Только для целей тестирования, попробуйте удалить реализацию Drag & Drop (отмените регистрацию события MouseDown), и тогда MouseDoubleclick должен работать.

1 голос
/ 24 ноября 2011

Убедитесь, что у вас нет другого зарегистрированного события мыши, например, MouseClick MouseDown, которое может помешать событию MouseDoubleclick.

Обновление

Добавьте следующий код в ваш обработчик событий MouseDown, вы можете проверить, является ли он первым двойным щелчком.

if(e.Clicks>1)
{
   int index = fieldsArea.IndexFromPoint(e.Location);
   string s = fieldsArea.Items[index].ToString();
   selectedFieldsArea.Items.Add(s); 
}

так вот ваш новый обработчик:

private void fieldsArea_MouseDown(object sender, MouseEventArgs e)
{
  if (fieldsArea.Items.Count == 0)
            return;
  int index = fieldsArea.IndexFromPoint(e.Location);
  string s = fieldsArea.Items[index].ToString();

  if(e.Clicks>1)
  {          
       selectedFieldsArea.Items.Add(s); 
  }
  else
  {
        DragDropEffects dde1 = DoDragDrop(s,
        DragDropEffects.All);
  }
}
0 голосов
/ 24 ноября 2011

Я полагаю, что у вас может быть событие MouseClick / MouseDown или событие SelectedIndexChanged, эти события сопротивляются срабатыванию события MouseDoubleclick, поэтому вам нужно правильно их обработатьСпасибо

...