1

データグリッドから「行」をドラッグする次のイベントを使用して、winforms に datagridview コントロールがあります。

    private void gridOperations_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
    {
        if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
        {

            if (Math.Abs(e.X - mouseDownPos.X) >= SystemInformation.DoubleClickSize.Width || Math.Abs(e.Y - mouseDownPos.Y) >= SystemInformation.DoubleClickSize.Height)
            {
                string[] filesToDrag = { "tmp/generated.log" };
                gridOperations.DoDragDrop(new DataObject(DataFormats.FileDrop, filesToDrag), DragDropEffects.Copy);
            }
        }
    }

問題は、datagridview にもクリック イベントとダブル クリック イベントがあることです。ダブル クリック イベントは、クリック時にマウスをまったく動かさない限り、最初はほとんど実行されません。「thershold」を追加して、マウスを押したままセルを 3 ピクセルドラッグすると、gridOperations.DoDragDrop がトリガーされるようにするにはどうすればよいですか? ありがとう!

4

1 に答える 1

1

整数カウンターを使用してみてください。イベントが発生するたびに int をインクリメントし、しきい値に達した場合は残りのコードを実行して 0 にリセットします。

お気に入り:

private int thCount = 0;
    private void gridOperations_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
    {
        if ((e.Button & MouseButtons.Left) == MouseButtons.Left && thCount==5)
        {
            //... 
            thCount = 0;
        }
        else
        {
            thCount++;
        }
    }

お役に立てれば幸いです

于 2013-02-09T15:53:04.077 に答える