我有5个文本框,双击即可编辑。
下面是我为一个文本框编写的方法。
private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
txtFirstLctrTime.IsReadOnly = false;
txtFirstLctrTime.Background = new SolidColorBrush(Colors.White);
txtFirstLctrTime.Foreground = new SolidColorBrush(Colors.Black);
}
有没有什么方法可以对所有文本框使用相同的方法,而不是为所有文本框编写不同的方法??我对编程还相当陌生
您可以将此处理程序atach到所有文本框。然后你检查发件人,因为那是你实际点击的文本框:
private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var textBox = sender as TextBox;
textBox.IsReadOnly = false;
textBox.Background = new SolidColorBrush(Colors.White);
textBox.Foreground = new SolidColorBrush(Colors.Black);
}
您应该研究MVVM和数据绑定思想,拥有点击处理程序和代码隐藏有其局限性。
将相同的处理程序附加到所有文本框,并使用sender参数获取引发事件的文本框实例:
private void MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.IsReadOnly = false;
textBox.Background = new SolidColorBrush(Colors.White);
textBox.Foreground = new SolidColorBrush(Colors.Black);
}
是的,有一种方法。Sender是一个参数,它可以告诉您是哪个控件触发了此事件。看看下面的例子:
private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
TextBox tbWhichFiredThisEvent = sender as TextBox;
if(tbWhichFiredThisEvent != null)
{
tbWhichFiredThisEvent.IsReadOnly = false;
// ... etc.
}
}
另一个选项是从TextBox继承并在OnDoubleClick方法上实现您的特定行为。
通过这种方式,您可以在不同的视图上拥有此控件,而无需重复代码。