1

編集可能なコンボ ボックスに LostFocus イベントを使用しているときに問題が発生しました。

private void comboBox8_LostFocus(object sender, RoutedEventArgs e)
    {
        ...
            else if (8int <= 7int && 8int >= 100)
            {
                MessageBox.Show("Error description", "Error!", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            ...
    }

編集のためにコンボボックステキストフィールドをマウスでクリックしても、メッセージボックスが表示されることを除いて、すべて正常に機能します。前のフィールドの「タブ」を使用すると、メッセージ ボックスが表示されません。ただし、マウスを直接クリックすると、誤ったメッセージボックスが発生します。「タブ」を使用してそのコンボボックスを離れるか、別の場所でマウスをクリックした場合にのみ表示する必要があります(フォーカスが失われました)。誰でもアドバイスを手伝ってもらえますか?似たような状況が見つかりません。ありがとうございました。

4

3 に答える 3

1

代わりにそのTextBox部分を聞きたい。ComboBox LostFocus

        private void comboBox8_Loaded(object sender, RoutedEventArgs e)
        {
            TextBox tb = (TextBox)(sender as ComboBox).Template.FindName("PART_EditableTextBox", (sender as ComboBox));
            if (tb != null)
                tb.LostFocus += new RoutedEventHandler(tb_LostFocus);
        }

        void tb_LostFocus(object sender, RoutedEventArgs e)
        {
            ...
            else if (8int <= 7int && 8int >= 100)
            {
                MessageBox.Show("Error description", "Error!", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            ...
        }
于 2013-03-22T17:33:08.513 に答える
0

上記の方法が役に立たないということではなく、別の方法があるかもしれません :) RoutedEventArgs からソースと元のソースを確認してください。

イベントがコントロール内から発生した場合、その内部の lostfocus イベント (コンボボックスには複数の内部コントロールがあります) であり、ソースと元のソースは同じタイプになります。

このコードは、私にとってはうまくいきます。コンボボックスが実際にフォーカスを失ったとき、私は「何かをします」。

**private void TimePicker_LostFocus(object sender, System.Windows.RoutedEventArgs e)
{
    if (e.OriginalSource.GetType().Name != e.Source.GetType().Name)
    { 
        Validate();
    }
}**

お役に立てば幸いです

/T

于 2018-11-30T07:25:24.827 に答える