あなたが作成することができますComboBox DropDownClosedおよびhittest関数のイベントは、ユーザーがクリックした他のコントロールを検索します。
private void ComboBox_DropDownClosed(object sender, EventArgs e)
{
Point m = Mouse.GetPosition(this);
VisualTreeHelper.HitTest(this, this.FilterCallback, this.ResultCallback, new PointHitTestParameters(m));
}
private HitTestFilterBehavior FilterCallback(DependencyObject o)
{
var c = o as Control;
if ((c != null) && !(o is MainWindow))
{
if (c.Focusable)
{
if (c is ComboBox)
{
(c as ComboBox).IsDropDownOpen = true;
}
else
{
var mouseDevice = Mouse.PrimaryDevice;
var mouseButtonEventArgs = new MouseButtonEventArgs(mouseDevice, 0, MouseButton.Left)
{
RoutedEvent = Mouse.MouseDownEvent,
Source = c
};
c.RaiseEvent(mouseButtonEventArgs);
}
return HitTestFilterBehavior.Stop;
}
}
return HitTestFilterBehavior.Continue;
}
private HitTestResultBehavior ResultCallback(HitTestResult r)
{
return HitTestResultBehavior.Continue;
}
コントロールを見つけた後にFilterCallback関数で、そのコントロールのマウスダウンイベントを発生させます。
raiseイベントが見つかりましたが、コンボボックスでは機能しません。クリックすると、単にIsDropDownOpenがtrueに設定されます。
hereにコードがあります。少し修正しました。
出典
2016-10-20 05:30:42
MSL
私はそうではありません。ポップアップが閉じられた後、ボタンクリックイベントが発生します。 – AnjumSKhan
あなたはWPFを使用していますか?スタンダードコントロール? .netフレームワークのバージョンは何ですか? –