【问题标题】:Passing parameter to a function in C#将参数传递给C#中的函数
【发布时间】:2013-08-20 16:13:49
【问题描述】:

我有一个小程序。它包括一个列表框和几个文本框。列表框中的元素很少,根据所选索引,它会将相应的值输出到文本框中。

代码示例:http://notepad.cc/share/AGh5zLNjfJ

我想使用一个函数将值打印到文本框中,而不是在 switch case 中一遍又一遍地输入它们。

类似这样的:

switch(personList.SelectedIndex)
{
    case 0:
        output(person1);
        break;
    case 1;
        output(person2);
        break;
}

我无法使用我创建的函数传递 person 对象并访问其属性。求救。

【问题讨论】:

  • “我无法传递 person 对象并使用我创建的函数访问它的属性。” - 为什么不呢?当你尝试时发生了什么?另外,请将您的代码放在问题中,而不仅仅是链接到它。
  • 是否要将列表框中的值输出到文本框中?
  • @JonSkeet 我认为帖子中的代码太长了。嗯,下次吧。我试过这个: public void output(object x) { idBox.Text = x.id; fnameBox.Text = x.name; lNameBox.Text = x.lName; }
  • @akinuri 看到我的回答。

标签: c# function parameter-passing


【解决方案1】:

不是通过选定的索引进行切换,而是将人员列表作为数据源分配给列表框。 When selected index changes - show data of selected item in textboxes:

// that's just creating list of People with NBuilder
var people = Builder<Person>.CreateListOfSize(5).Build().ToList();
personList.DisplayMember = "fname"; // set name of property to be displayed
personList.DataSource = people;

然后从列表中选择人:

private void personList_SelectedIndexChanged(object sender, EventArgs e)
{
    Person person = (Person)personList.SelectedItem;
    output(person);
}

请记住,在 C# 中,我们将 PascalNaming 用于方法和属性。

【讨论】:

    【解决方案2】:

    从你的代码我猜你需要一个函数。你可以这样做

    private void Output(Person p)
    {
         idBox.Text = p.id;
         fnameBox.Text = p.name;
         lNameBox.Text = p.lName;
    }
    

    并像你打电话一样调用它。

    【讨论】:

    • 我传递的是 (object p) 而不是 Person。嗯,我是新手。谢谢。
    【解决方案3】:

    你的输出功能和这个类似吗??

    public void output(Person p)
    {
        idBox.Text = p.id;
        nameBox.Text = p.name;
        lNameBox.Text = p.lName;
    }
    

    您可以按以下方式获取所选项目(如果您已将列表框与人员列表绑定为数据源)

    Person p = (Person)listBox1.SelectedItem;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 2012-12-02
      • 2017-10-04
      • 2013-01-27
      • 2012-09-26
      相关资源
      最近更新 更多