我有一个关于C#中面向对象的一般问题。
假设我有多个XAML页面都有这个方法:
private void SubmitButton_Click(object sender, RoutedEventArgs e)
{
// Do Something
}
现在我有一个类来保存一个方法,该类被称为Methods.cs并保存它:
public void StopUpperAndSpace(TextBox txtBox)
{
txtBox.Text = txtBox.Text.Trim();
// Set it to lowercase
txtBox.Text = txtBox.Text.ToLower();
}
当用户单击任何页面上的SubmitButton时,我希望它执行存储在Methods.cs中的此方法。如果我在一个名为NameTextBox的XAML页面上有一个文本框,当用户单击SubmitButton时,我将如何执行该方法,以便SubmitButton_Click方法中的NameTextBox等于StopUpperAndSpace方法中的txtBox?
我理解这个问题很难理解,但我觉得很难解释。如果您需要澄清,请发表评论!感谢:)
答案 0 :(得分:4)
我误解了你,为什么你不能把它传递给你的方法?我也会让你的方法变成静态的,但如果你想在技术上创建一个Methods类的实例。
<强> SomePage.xaml 强>
<TextBox x:Name="SomeTextBox" />
<TextBox x:Name="SomeOtherTextBox />
<强> SomePage.xaml.cs 强>
private void SubmitButton_Click(object sender, RoutedEventArgs e)
{
// Your initial method call could potentially look like this.
Methods.StopUpperAndSpace(this.SomeTextBox);
// Alternatively you could do something like this.
this.SomeOtherTextBox.Text = Methods.ToLowerAndTrim(this.SomeOtherTextBox.Text);
}
<强> Methods.cs 强>
public static void StopUpperAndSpace(TextBox txtBox)
{
txtBox.Text = txtBox.Text.Trim();
// Set it to lowercase
txtBox.Text = txtBox.Text.ToLower();
}
public static string ToLowerAndTrim(string text)
{
return text.Trim().ToLower();
}