4

TextBoxはwinformプロジェクトでカスタムを使用しています。カスタムにこのプロパティを追加しましたTextBox:

private TextBox _nextControl;

public TextBox NextControl 
{
    set { _nextControl=value; }
    get { return _nextControl; }
}

プロパティを使用してカスタムプロパティに2 TextBox(textBox1およびtextBox2)を含むフォームでこの結果を得ました。すべてのes が次の形式で表示されます。TextBoxNextControlTextBox

ここに画像の説明を入力

この場合、プロパティは次のコントロールを選択するためにフォームにNextControlすべて表示されます。TextBox

しかし、新しい WPF コスチュームで同じことをしたい場合TextBox、同じ条件 (2 つのTextBoxes、textBox1 および textBox2) でこれを取得しました。

ここに画像の説明を入力

同じ結果が得られないのはなぜですか? そして、私のWPFプロジェクトでこれを行う方法は?


アップデート:

詳細については、私の winform プロジェクトでは、プロパティを使用しNextControlて UI プロパティから次のコントロールを選択します。

protected override void OnKeyDown(KeyEventArgs e) 
{
    if(e.KeyCode==Keys.Down) 
        // select the next TextBox chosen in this TextBox option
        _nextControl.Select(); 
}

TextBoxUI で次の名前を既に選択できるため、余分なコードでこれを行いたくありません

しかし、これは WPF では機能しません。TextBoxプロパティのウィンドウに自分の esの名前が表示されませんNextControl(プロパティのタイプを選択すると自動的に winform に = TextBox)。

ps:TextBoxから継承された私のカスタムSystem.Windows.Controls.TextBox


アップデート:

WPFが同じように動作できるようにするためのサンプルプロジェクトのカスタムTextBox [ここ]を使用して、winformプロジェクトをアップロードしました。

このサンプルのリンクを更新しました。

4

3 に答える 3

1

コードを簡単に見てみると、Windows フォーム ユーザー コントロールが WPF と互換性がないことがわかります。特に、Windows フォームの keyDown イベントはパラメーター「KeyEventArgs e」を解析します。これは System.Windows.Form.Key ですが、WPF は「System. Windows.Input.Key" および WPF にはテキスト ボックスの "Select() メソッドがありません。また、WPF はコントロールを WinForm に非常に異なる方法でバインドするため、WinFromuserControl は WPF フォームでは機能しません。

WPF フォームで同様の動作を使用する場合は、WPF でサポートされるものを作成する必要があります。

于 2013-05-09T16:02:53.617 に答える