2012-02-21 12 views

答えて

4

あなたは、このようにStackPanelの内側にあなたのTextBoxを配置することができます:

のStackPanelイベントハンドラで次に
<StackPanel MouseLeftButtonDown="StackPanel_MouseDown"> 
     <TextBox Name="textBox1"/> 
    </StackPanel> 

private void StackPanel_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     if (e.ClickCount >= 2) 
     { 
      textBox1.IsEnabled = true; //only hit here on DoubleClick 
     } 
    } 

この質問に記載されているように、あなたものStackPanelのDoubleClickをシミュレートすることができます。

WPF StackPanel with Click AND DoubleClick

+0

非常に創造的な解決策は、ダブルクリックは特定の期間内に実行する必要があることに注意してください。 –

+1

@Michel Keijzersありがとうございました!あなたが好きなら+1します。すべてのDoubleClickは特定の期間内に実行する必要があります。私は、これをシミュレートする複数の方法への参照を追加しました。 –

+0

私は(私の代わりにdownvoteしなかったと仮定します) –

3

これは非常に珍しいことですが、コントロールが無効になっているときにも入力が期待されません。通常、無効になっているコントロールを参照しているユーザーは、クリック/ダブルクリックすることさえできません。

それを有効にするチェックボックスを追加したり、それに属している機能を追加したり、許可されていないときにダブルクリックするとメッセージボックスを表示することができます。この場合、ダブルクリックできない理由を明確に追加することもできます。

私が以前見たのは、コントロールの直前にテキストのないチェックボックスです。チェックボックスをクリックすると、コントロールの後ろにテキストボックスが表示されます。チェックボックスのツールチップを使用して、チェックボックスの内容に関するヘルプ情報を提供することもできます。

+0

この代替案を棄却した人はコメントを残すことができますか? –

+1

私はそうではありませんが、彼女はあなたが自分の味に質問に答えなかったと思っていたので、私はそれを推測します –

+0

はい、私はまた、投稿していただきありがとうございます。 –

2

私はPreviewMouseDownイベントに接続し、そこで有効/無効にしようとします。

それ以外の場合は、clickイベントを受け取るためにテキストボックスの上に透明なコントロールを持つという古いVB6のやり方をしなければなりません。

+0

たぶん、私はデータグリッドセルのようなものがほしいと思うかもしれません... –