11

WPF コントロールに複数のボタンを持つ winforms ユーザー コントロールがあります。

私のユーザーコントロールは以前は Windows フォームでホストされていましたが、それができました。

this.ParentForm.AcceptButton = this.btnSearch;

WindowsFormHostにある今、ユーザーコントロールで同様のことを行う方法を確立しようとしています。ParentForm プロパティが null です。

私が理想的に達成したいことが2つあります。

  1. AcceptButton の動作 (Enter キーでボタンを押す)
  2. AcceptButton フォーマット - つまり、winforms ボタンには、Accept ボタンの代替フォーマットが適用されます。

どうもありがとう、クリス

4

6 に答える 6

30

ページのボタンに Button.IsCancel (Esc) または IsDefault (Enter) を設定します。

例:

<Button Content="Yes" Click="Yes_Button_Click" IsDefault="True"/>
<Button Content="No" Click="No_Button_Click" IsCancel="True"/>
于 2012-10-08T13:40:06.127 に答える
0

WPFWindowには、Windows フォームの概念であるAcceptButton. ハンドラーEnterを自動的にエンゲージするためのキーを取得できない可能性があります。btnSearch.Clickまた、承認ボタンの代替スタイルも取得できません。

検索ボタンをクリックしたように動作する Windows フォーム コントロールのメソッドを潜在的に公開し、Enterキーが押されたときに WPF 側からそのメソッドを呼び出すことができます。そうしないと、フォーム コントロールと WPF コントロールの間の相互作用が不足していることに気付くでしょう (WindowsFormsHost完全な忠実度のアクセスを提供することを意図したものではありません)。

于 2011-03-25T14:03:26.020 に答える
0

Esc と Enter を使用するために、私はこれを使用しました:

<UserControl.InputBindings>
    <KeyBinding Key="Esc" Command="{Binding CancelCommand}"/>
    <KeyBinding Key="Enter" Command="{Binding SaveCommand}"/>
</UserControl.InputBindings>
于 2019-02-22T12:04:25.533 に答える
-1

残念なことに、WPF に AcceptButton がなく、迷惑です。

フォームの KeyUp イベントを処理することで、機能を正常に実装しました。コードは次のとおりです。

private void Window_KeyUp(object sender, KeyEventArgs e)
{
   if(e.Key == Key.Enter)
   {
      TargetButton_Click(sender, null);
   }
 }  

うまくいくようです。私の場合、WPFフォームにテキストボックスがあり、ユーザーが値とヒットを入力すると、うまくいくようです。フォームまたは何かの前にオーバーライドする (KeyUp イベントを取得する) コントロールに問題がある可能性があるため、マイレージが異なる場合があります。:)

于 2015-01-26T01:05:28.213 に答える
-1

よくわかりませんが、そのボタンにフォーカスを合わせていただけますか?したがって、winforms と同じ動作になります。

于 2011-03-25T12:57:08.433 に答える