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