C#参数转发

时间:2013-11-15 14:08:41

标签: c#

我是初学者,所以请耐心等待。

这都是C#。

在“MainWindow”类中,我有以下代码:

private void textBox_Enter(object sender, EventArgs e)
{
    view.passwordInputEnter(/**/);
}

在“视图”类中,我有以下代码:

public void passwordInputEnter(object sender)
{
    if (/**/ == "Passwort")
    {
        /**/ = string.Empty;
        /**/ = '*';
    }
}

我想要做的是:在类“MainWindow”中有多个方法都会从“视图”调用不同的方法,这些方法都完全相同。我想改变它,以便他们可以调用相同的方法,以便我可以轻松添加或删除它们。为此,我需要识别和访问启动事件的对象的各种参数。但是,我无法弄清楚如何发送

object sender

由textBox_Enter接收到passwordInputEnter()。在那个方法中,我想调用诸如“sender.Text”之类的函数。

我真的不知道怎么说它更容易理解......

非常感谢任何建议!

4 个答案:

答案 0 :(得分:2)

如果您方法的所有调用者都是TextBox

将其更改为

public void passwordInputEnter(TextBox textBox)
{
    if (textBox.Text == "Passwort")
     {
         xxx= string.Empty;
         /**/ = '*';
      }
}

来称呼它

private void textBox_Enter(object sender, EventArgs e)
{
   view.passwordInputEnter((TextBox)sender);
}

修改

但在这种情况下,为所有文本框分享相同的事件会更容易......

答案 1 :(得分:1)

通常的做法(尽管我必须说这通常不是一个好习惯):

var textBoxSender = sender as TextBox;

if (textBoxSender != null)
{
   textBoxSender.Text = "Changed value";
}

答案 2 :(得分:0)

如果我理解你正确的问题,你问的是如何将参数传递给passwordInputEnter方法。像这样传递发件人:

private void textBox_Enter(object sender, EventArgs e)
{
    view.passwordInputEnter(sender);
}

public void passwordInputEnter(object sender)
{
    if (sender is TextBox)
    {
       TextBox textBox = (TextBox)sender;
       if (textBox.Text == "Passwort")
       {
            /**/ = string.Empty;
            /**/ = '*';
       }
     }
}

答案 3 :(得分:0)

按如下方式投放发件人:  var textBox = sender as TextBox

检查它是否为null,如果没有,则在其上设置Text属性 textBox.Text ="更改了值&#34 ;;