gpt4 book ai didi

c# - 如何用字符串替换控件的名称和方法?

转载 作者:行者123 更新时间:2023-11-30 23:29:24 27 4
gpt4 key购买 nike

我正在使用 C# 中的 SQL Server 和 Visual Studio 编写触摸屏餐厅 POS 程序包。为了选择一个项目,我填充了一个表单,其中包含一个用户控件选择按钮的四十次迭代,其中包含一个 Button 控件和一个 Label 控件。这些用户控件包括一个网格,横跨四列,纵深十个,列指定为 A、B、C、D,行指定为 1 到 10。根据相应 Items 数据表中的值,我需要使匹配的用户控件可见,设置其按钮的背景色,并将按钮的文本设置为 Item 的名称。要在用户控件的按钮上设置文本,它带有以下代码:

   public string iButtonItem
{
get { return iButton.Text; }
set { iButton.Text = value; }
}

返回表单,我加载数据表,其中每个项目都有一个位置字段,例如 A1 或 C8。现在我需要设置按钮。对于给定的按钮,比如位置 A3 的按钮,这行代码完美地工作:

this.iButtonA3.iButtonItem = row["ItemName"].ToString().TrimEnd();

我的问题是,与其拥有 40 组 Switch/Case 代码块,每个按钮一组,不如让一个 block 带有替换字符串:“iButton”+ locationString +“.iButtonItem”要优雅得多这在 FoxPro 中很容易,我相信在 Visual Basic 中也是可能的。但是我怎样才能在 C# 中完成它呢?在此过程中,我尝试过使用 this.Controls.Find 但它不起作用,因为我需要调用用户控件的 iButtonItem 方法。

最佳答案

您可以使用Controls.Find,访问iButtonItem,您只需转换为包含它的控件类型:

var uc = this.Controls.Find("iButtonA3", true).FirstOrDefault() as YouUserControlType;
if (uc != null)
uc.iButtonItem = "Hello";

或者另一种方式

IDictionary<string, YouUserControlType> buttons;

public SomeForm()
{
InitializeComponent();

buttons = new Dictionary<string, YouUserControlType>()
{
{ "iButtonA1", iButtonA1 },
{ "iButtonA2", iButtonA2 },
};
}

允许 buttons[nameString].iButtonItem = ...

关于c# - 如何用字符串替换控件的名称和方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35458241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com