【问题标题】:How can I access data from a Tag in C#如何从 C# 中的标签访问数据
【发布时间】:2020-11-18 03:43:59
【问题描述】:

我在其他问题中看到过这一点,但我不明白答案。

我有一个类,它通过循环通过 SQL 阅读器来填充,然后创建这些对象的数组,然后从该对象数组创建按钮。代码如下所示:

public class MenuItem
{
   public string Name { get; set; }
   public double Cost { get; set; }
   public string OrderListName { get; set; }

   public MenuItem() {}
}

SQL 循环是这样的:

while (reader.Read())
{
   MenuItem item = new MenuItem
   {
     Name = reader["name"].ToString(),
     OrderListName = reader["orderlistname"].ToString(),
     Cost = Convert.ToDouble(reader["cost"])
   };
   MenuItems[MenuItemCount] = item;
   MenuItemCount++;
}

然后我在 for 循环中使用此代码创建按钮

{
  Button menubutton = new Button
  {
   Text = MenuItems[k].Name + Globals.nl + MenuItems[k].Cost,
   Location = new Point(point1, point2),
   Size = new Size(100, 100),
   Visible = true,
   Tag = MenuItems[k]
};
 MenuButtons[j] = menubutton;
 j++;
 point1 += 110;
 point2 += 0;
}

在另一个 for 循环中我有:

MenuButtons[k].Click += new EventHandler(MenuButton_Click);

最后

private void MenuButton_Click(object sender, EventArgs e)
   {
      Button button = sender as Button;
   }

所以我根据 SQL 行创建多个对象,将这些对象保存到一个对象数组中,然后为数组中的每个对象创建一个按钮。我可以正确访问按钮属性,但我不知道如何访问保存在按钮标签属性中的对象的属性。

我找到了这篇文章,并相信答案就在那里,但我无法弄清楚: How to access the object data that is stored in Tag property in a gridview?

如果您需要查看更多内容,我可以提供更多代码。 我试过了

Console.WriteLine((MenuItem)button.Tag.OrderListName) 

在 MenuButton_Click 函数中

和其他变体,但它们都导致相同的问题,即它说“对象不包含 OrderListName 的定义”,当我只做 button.tag 时,它只显示“Form1+MenuItem”,当我单击按钮,以便表明该对象没有被分解和访问。

【问题讨论】:

  • 试试Console.WriteLine(((MenuItem)button.Tag).OrderListName)

标签: c# tags


【解决方案1】:

就是Console.WriteLine(((MenuItem)button.Tag).OrderListName)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2019-02-01
    • 2018-04-18
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多