6

我在 WPF C# 中做简单的程序,我有很多TextBoxes- 每个都TextBox做同样的事情,我很懒惰为每个TextBox. 那么,有什么方法可以TextBox通过一个事件来服务所有人?

有一个简短的代码:

private void OnMouseLeft(object sender, MouseButtonEventArgs e)
{
    TextBox1.Text = string.Empty;
    TextBox1.Foreground = Brushes.Black;
}
private void OnMouseLeft1(object sender, MouseButtonEventArgs e)
{
    TextBox2.Text = string.Empty;
    TextBox2.Foreground = Brushes.Black;
}

谢谢你!:)

4

7 回答 7

12

将相同的处理程序附加到所有文本框并使用sender参数来获取引发事件的文本框实例:

private void OnMouseLeft(object sender, MouseButtonEventArgs e)
{
    TextBox textBox = (TextBox)sender;
    textBox.Text = String.Empty;
    textBox.Foreground = Brushes.Black;
}
于 2013-07-29T14:06:12.567 回答
2
private void OnMouseLeft(object sender, MouseButtonEventArgs e)
{
    (sender as TextBox).Text = string.Empty;
    (sender as TextBox).Foreground = Brushes.Black;
}
于 2013-07-29T14:05:32.117 回答
0

'sender' 参数将是 TextBox 本身。因此,只需编写一个函数并将它们全部附加到该函数。

private void OnMouseLeft(object sender, MouseButtonEventArgs e)
{
    var textBox = (TextBox)sender;
    textBox.Text = string.Empty;
    textBox.Foreground = Brushes.Black;
}
于 2013-07-29T14:06:23.637 回答
0

尝试对所有文本框进行此操作,不允许仅数值文本..

$('input[type=text]') .keydown(function (e) {
if (e.shiftKey || e.ctrlKey || e.altKey) { e.preventDefault(); } else { var key = e.keyCode; if (!((key == 8) || (key == 32) || (key == 46) || (key >= 35 && key <= 40) || (key >= 65 && key <= 90))) { e.preventDefault(); } } });

于 2014-10-30T06:16:47.240 回答
0

您可以将多个事件分配给同一个事件处理程序。这些事件可以来自相同的控件和/或不同的控件。

        TextBox t = new TextBox();
        t.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeft);
        t.MouseLeftButtonDown += new MouseButtonEventHandler(OnMouseLeft);
        TextBox t2 = new TextBox();
        t2.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeft);

然后,您只需通过投射发件人来处理哪个文本框。

((TextBox)sender).Property = value;

于 2013-07-29T14:07:34.583 回答
0

将每个 taxBox 添加到相同的方法,然后单击 TextBox,如图所示,我没有这样做,但它应该可以工作,或者至少让你朝着正确的方向前进。我希望它有帮助。

textBox.MouseClick += new MouseEventHandler(textBox_MouseClick);

 private void textBox_MouseClick(object sender, MouseEventArgs e)
 {
      if (e.Button == System.Windows.Forms.MouseButtons.Left)
      {
           TextBox textBox = sender as TextBox;
           textBox.Text = string.Empty;
           textBox.Forground = Brushes.Black;
      }
 }
于 2013-07-29T14:15:30.840 回答
-1
TextBox T = (TextBox)sender;

您可以使用发件人

于 2014-09-03T03:46:19.013 回答