0

ダブルクリックをサポートする TextBox が必要ですが、コード化しようとしているときに、テキスト領域内をクリックしても、Silverlight テキストボックスで左ボタンのマウス イベントが発生しないという問題が発生しました。では、ここで可能な解決策は何ですか? Silverlight4 を使用しています。

4

2 に答える 2

2

次のように、デフォルトから継承してメソッドTextBoxをオーバーライドするカスタム テキスト ボックス コントロールを作成する必要があります。OnMouseLeftButtonUp

public class MyTextBox : TextBox
{
    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
    {
        base.OnMouseLeftButtonUp(e);
        // Do your stuff here
    }
}

ダブルクリックを処理する必要がある場合は、クリック カウントの概念を導入した Silverlight 5 に切り替える方が簡単です。ダブルクリックを処理するためのチュートリアルは次のとおりです: http://www.silverlighthostingnews.com/index.php/archives/440 基本的にこれを行う必要があります:

if(e.ClickCount == 2) {...}

編集:Silverlight 4で行う方法は次のとおりです。

  • デフォルトの TextBox クラスを継承するカスタム テキスト ボックスを作成し、次のようにマウス イベントをオーバーライドします。

-

public class DoubleClickTextBox : TextBox
{
    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
    {
        // Do nothing
    }
    protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
    {
        // Do nothing
    }
}
  • プロジェクト クラスにDoubleClickExtender クラスを追加します。

  • コード ビハインドで、ダブルクリック イベントにアタッチします。

-

DoubleClickExtender dce = new DoubleClickExtender(textBox, 300)
dce.DoubleClick += new MyEventHandler(dce_DoubleClick);
于 2012-07-24T12:33:08.693 に答える
0

私はこれを自分で試していませんが、これでごまかすことができるかもしれません

  • テキスト ボックスのテンプレートを変更して、IsHitTestVisible = true である透明なオーバーレイを作成します。
  • オーバーレイにダブルクリック イベントを設定します。
  • オーバーレイ上で 1 回のクリックを検出した場合は、何もせずにそのままにしておきます

  • ダブルクリックを検出した場合は、 mousebuttoneventargsのイベント処理を true に設定し、ダブルクリック アクションを実行します。

Silverlight4 でのダブルクリックはネイティブでサポートされていないため、それをシミュレートする方法を考え出す必要があることに注意してください。

于 2012-07-24T12:35:42.457 に答える