###前提・実現したいこと
コンボボックス(System.Windows.Controls)で、
IsEditable = true
とすることで文字入力による編集が可能となりますが、
プルダウンよりアイテムを選択した際に文字列が全選択されてしまいます。
(TextBox.SelectAll()が行われる。)
これを抑止し、文字列の末尾にキャレット位置が来るようにしたいです。
ただし、ドラッグによる文字選択や、テキスト部にフォーカスがある状態での[Ctrl]+[A]による全選択は通常通り可能としたいため、
TextBox.SelectionChangedをつぶすことは不可です。
よろしくお願いいたします。
###試したこと
ComboBox.SelectionChangedを処理して、下記のようにしてみましたが、
どうやら、SelectionChangedのタイミングではテンプレート内のテキストボックスにはまだ値がセットされないようで、
この方法では解消できませんでした。
csharp
1 private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 2 { 3 ComboBox comboBox = (ComboBox)sender; 4 var textBox = comboBox.Template.FindName("PART_EditableTextBox", comboBox) as TextBox; 5 if (textBox != null) 6 { 7 textBox.Select(textBox.Text.Length, 0); 8 //や、 9 //textBox.SelectionLength = 0; 10 //textBox.SelectionStart = textBox.Text.Length; 11 } 12 }
ならばと思い、
コンボボックスのLoaded
イベントで内部のTextBoxのTextChangedに同様の処理をトリガーしてみましたが、同様でした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。