-2

イベントハンドラーの使い方をまだ学んでいます。
私が欲しいのは、txtMonday をクリックしてフォーカスを取得したら、削除ボタンをクリックして、選択したテキスト ボックスをクリアすることです。
問題は、選択したテキストボックスの削除ボタンをクリックすると、選択されていないテキストボックスがすべてクリアされることです。選択したテキストボックスのみを削除したい。この問題を解決するには?あなたのコード例は大歓迎です。ありがとう!私はWPFとC#を使用しています。

    private void btnRemoveClick(object sender, RoutedEventArgs e)
    {
        TextBox text = new TextBox();
        text.GotFocus += new RoutedEventHandler(txtMonday_GotFocus);
           txtMonday.Clear();


        text.GotFocus += new RoutedEventHandler(txtTuesday_GotFocus);
           txtTuesday.Clear();

    }

    private void txtMonday_GotFocus(object sender, RoutedEventArgs e)
    {

    }

    private void txtTuesday_GotFocus(object sender, RoutedEventArgs e)
    {

    }
4

1 に答える 1

3

これはあなたが望むことをするはずです。ただし、コードにはいくつかの根本的な誤解があるため、C# についてさらに学習することをお勧めします。

//you'll need a variable to store the last focused textbox.
TextBox txtLast;

public MainWindow()
{
    InitializeComponent();
    //add an event for all the textboxes so that you can track when one of them gets focus.
    txtSunday.GotFocus += txt_GotFocus;
    txtMonday.GotFocus += txt_GotFocus;
    txtTuesday.GotFocus += txt_GotFocus;
    txtWednesday.GotFocus += txt_GotFocus;
    txtThursday.GotFocus += txt_GotFocus;
    txtFriday.GotFocus += txt_GotFocus;
    txtSaturday.GotFocus += txt_GotFocus;

    //default to clearing sunday to avoid exception 
    //you could also let it clear a new TextBox(), but this is wasteful. Ideally, 
    //you would handle this case gracefully with an if statement, but I will leave that 
    //as an exercise to the reader. 
    txtLast = txtSunday;
}

private void txt_GotFocus(object sender, RoutedEventArgs e)
{
    //whenever you click a textbox, this event gets called. 
    //e.source is the textbox, but since it is is just an "Object" we need to cast it to a TextBox
    txtLast = e.Source as TextBox;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    //this will clear the textbox which last had focus. If you click a button, the current textbox loses focus. 
    txtLast.Clear();
}
于 2013-07-08T19:56:03.083 に答える