0

我知道这很简单。

我有Mainwindow一个文本框。在文本框内容更改发生事件即textboxtext_changed之后,我希望文本框再次变为空。

我在其他类中有一个函数,它在textboxtext_changed. 我正在考虑仅在其他类中清除函数中的文本框,但我无法访问主窗口控件,我不想在那里创建主窗口实例。

有什么简单的方法吗?

4

3 回答 3

2
public void function(ref TextBox textBox)
{
  textbox.Text = string.empty;
}
于 2013-01-24T11:33:24.547 回答
1

从您的 TextChanged 函数中,您可以从发件人访问 TextBox

private void textBox1_TextChanged(object sender, EventArgs e)
{
    ((TextBox)sender).Text = "";
}
于 2013-01-24T11:34:03.927 回答
0

使用MVVM可以非常简单:

  1. 在 ViewModel 中声明一个字符串属性。
  2. 将该属性绑定TextBox.Text到此字符串属性并将 UpdateSourceTrigger 设置为 PropertyChanged 并将 Mode 设置为 TwoWay。
  3. 每当 ViewModel 上的属性发生变化时执行您的逻辑。

视图模型

    public class MyViewModel : INotifyPropertyChanged
    {
        private string someText;

        public string SomeText
        {
            get
            {
                return this.someText;
            }
            set
            {
                this.someText = value;

                if (SomeCondition(this.someText))
                {
                    this.someText = string.Empty;
                }

                var epc = this.PropertyChanged;
                if (epc != null)
                {
                    epc(this, new PropertyChangedEventArgs("SomeText"));
                }
            }
        }
    }

XAML

    <TextBox Text="{Binding SomeText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
于 2013-01-24T12:04:03.767 回答