Xtragrid があり、Layoutview を使用しています。私のカードには、いくつかのコンテンツを含む 2 つのグループがあります (グループ行はありません!)。ユーザーがグループキャプションをクリックした場合、クリックイベントを発生させることは可能ですか?
普通のグループです!たとえば、3 つのテキスト編集を選択し、デザイナーで右クリック -> グループ化します。レイアウトビューのカード内で同じことができます。
よろしく。
Xtragrid があり、Layoutview を使用しています。私のカードには、いくつかのコンテンツを含む 2 つのグループがあります (グループ行はありません!)。ユーザーがグループキャプションをクリックした場合、クリックイベントを発生させることは可能ですか?
普通のグループです!たとえば、3 つのテキスト編集を選択し、デザイナーで右クリック -> グループ化します。レイアウトビューのカード内で同じことができます。
よろしく。
ビューの MouseDown イベント ハンドラーを使用し、HitTests を使用してレイアウト アイテムかどうかを確認し、レイアウト アイテムをテストしてグループかどうかを確認し、Border Info を確認してキャプションの境界を取得します。
LayoutView View = (sender as LayoutView);
var hi = View.CalcHitInfo(e.Location);
if (hi.HitTest == LayoutViewHitTest.LayoutItem && hi.LayoutItem is DevExpress.XtraLayout.LayoutControlGroup)
{
var Border = (hi.LayoutItem.ViewInfo.BorderInfo as DevExpress.Utils.Drawing.GroupObjectInfoArgs);
if (Border.CaptionBounds.Contains(e.Location))
{
MessageBox.Show("Hit Group: " + Border.Caption);
return;
}
}
MessageBox.Show("Missed!");
gridview mousemove イベントでマウス位置を取得します。
private void grvReleaseInfo_MouseMove(object sender, MouseEventArgs e)
{
mouseLocation = e.Location;
}
次に、グリッドビューのクリックイベントに移動し、アイテムの位置でマウス位置を確認します (私の例ではグループキャプション)
private void grvReleaseInfo_Click(object sender, EventArgs e)
{
if ((mouseLocation.X > 38) &&
(mouseLocation.X < 85) &&
(mouseLocation.Y > 46) &&
(mouseLocation.Y < 117))
{
//Do sth.
}
マウス位置は「ポイント」型の変数です。座標がわからない場合は、デバッガーでブレークポイントを設定し、アイテムの左上隅をクリックしてから右下隅をクリックすると、マウスの位置を監視できます。次に、チェックする必要がある範囲があります。
よろしく