UltraGridの編集中のセルでマウスクリックイベントを実装する場合は、UltraGridのControlAddedとControlRemovedイベントを使用してエディター用のコントロールに対するマウスイベントを動的に作成・解除してください。

private void ultraGrid1_ControlAdded(object sender, ControlEventArgs e)
{
    e.Control.MouseDown += Control_MouseDown;
    e.Control.MouseUp += Control_MouseUp;
    e.Control.Click += Control_Click;
    e.Control.DoubleClick += Control_DoubleClick;
}

private void ultraGrid1_ControlRemoved(object sender, ControlEventArgs e)
{
    e.Control.MouseDown -= Control_MouseDown;
    e.Control.MouseUp -= Control_MouseUp;
    e.Control.Click -= Control_Click;
    e.Control.DoubleClick -= Control_DoubleClick;
}

 

閑話休題:なぜ編集中のセルでマウスクリックなどのイベントが発生しないのですか?

UltraGridは、セルが編集モードにある場合、編集用のウインドウをセルの上にオーバーレイ表示し、その中で編集セルの表現を行っています。このとき、セルに対するMouseDown, MouseUp, Click などのマウスクリックイベントは、グリッドからは直接検知できないので、これらのイベントは発生しない仕様となっています(これはMicrosoft社の標準グリッドコントロールと同等の動作です)。 

この動作が当てはまるのは、MouseDown, MouseUp, MouseEnter, MouseLeave, MouseMove, Click, DoubleClickイベントです。

編集モード中のセルでこれらのイベントが発生しないのはそのためです。

 

サンプル

 

Tagged:

製品について

Ultimate UI for Windows Forms