6

2つのDataGridViewイベントがあります。セルをダブルクリックすると、イベント、つまりイベントcell clickcell double clickイベントの両方が呼び出されるという問題があります。これが発生した理由と解決策を教えてください。

ありがとう

4

3 に答える 3

1

そのWindowsの問題。私が知る限り、彼らはそれを処理するために特別なものを何も追加していません。

あなたはこれを扱うことができます-

  • a)selectのように、ダブルクリックの前に実行したいことをシングルクリックするだけです。
  • b)それがオプションでない場合は、クリックイベントでタイマーを開始します。タイマーティックで、シングルクリックアクションを実行します。ダブルクリックイベントが最初に発生した場合は、タイマーを強制終了し、ダブルクリックアクションを実行します。

時間を設定する時間は、システムのダブルクリック時間(ユーザーがコントロールパネルで指定できます)と同じである必要があります。から入手できますSystem.Windows.Forms.SystemInformation.DoubleClickTime

于 2012-11-19T13:04:06.450 に答える
1

どうやら、DataGridViewのプロパティを設定するだけではそれを行う方法はありません。したがって、タイマーを使用してダブルクリックがあったかどうかをカウントできます。シングルクリックイベントハンドラーで行うことだけでなく、コードを確認してください。

System.Windows.Forms.Timer t;
        public Form1()
        {
            InitializeComponent();

            t = new System.Windows.Forms.Timer();
            t.Interval = SystemInformation.DoubleClickTime - 1;
            t.Tick += new EventHandler(t_Tick);
        }

        void t_Tick(object sender, EventArgs e)
        {
            t.Stop();
            DataGridViewCellEventArgs dgvcea = (DataGridViewCellEventArgs)t.Tag;
            MessageBox.Show("Single");
            //do whatever you do in single click
        }

        private void dataGridView1_CellClick_1(object sender, DataGridViewCellEventArgs e)
        {
            t.Tag = e;
            t.Start();
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            t.Stop();
            MessageBox.Show("Double");
            //do whatever you do in double click
        }
于 2012-11-19T13:16:25.227 に答える
1

グリッドのRowHeaderMouseClickイベントを使用できます

    private void dgv_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
 {

    }
于 2013-05-23T05:02:22.267 に答える