Ячейка двойного щелчка не работает. выполняется только событие Cellclick - PullRequest
0 голосов
/ 22 июня 2010

У меня есть и события cellclick, и celldoubleclick для таблицы данных в моем приложении оконных форм. Проблема заключается в том, что при двойном щелчке срабатывает только событие cellclick, поскольку он не может определить, является ли он одним или двумя щелчками.

Я искал это и обнаружил, что таймеры могут быть решением ... но как это сделать? Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 22 июня 2010

Вы, вероятно, должны попытаться выяснить, почему двойной щелчок не срабатывает.Отвечая на ваш вопрос: вам действительно понадобится таймер, интервал которого вы установили на время двойного щелчка:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        timer1.Interval = SystemInformation.DoubleClickTime;
        timer1.Tick += delegate { timer1.Enabled = false; };
    }

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
        if (timer1.Enabled) {
            timer1.Enabled = false;
            // Do double-click stuff
            //...
        }
        else {
            timer1.Enabled = true;
            // Do single-click stuff
            //...
        }
    }
}
0 голосов
/ 10 мая 2019

Я нашел небольшое решение для этого: добавить таймер в вашей форме

public Form1()
{
     timer1.Interval = SystemInformation.DoubleClickTime;
}
bool double_click = false;
//
DataGridViewCellEventArgs sendedEvent = null;
private void DatagridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
   double_click = true;
   sendedEvent = e;
}
private void DatagridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    sendedEvent = e;
    //
    timer1.Enabled = true;
    //
    timer1.Start();
 }
 private void timer1_Tick(object sender, EventArgs e)
 {
    if (!double_click)
    {
        // DO your simple click stuff and USE sendedEvent if needed
    }
    else
    {
         double_click = false;
         // DO your Doubleclick stuff and USE sendedEvent if needed
    }

    timer1.Stop();
    timer1.Enabled = false;
  }

Надеюсь, это поможет ^^

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