gpt4 book ai didi

c# - 我可以像在 VB 中那样在 C# 中为控件提供索引属性吗?

转载 作者:行者123 更新时间:2023-12-02 15:33:13 25 4
gpt4 key购买 nike

我之前已经找到了与我的问题类似的答案,但与我想要做的不完全一样......

在 Visual Basic 中(我上次使用它是在 06/07),有一个“Index”属性,您可以将其分配给具有相同名称的多个控件。我主要用它来循环控制,即:

For i = 1 to 500
picSeat(i).Print "Hello"
Next i

有没有办法在 C# 中做到这一点?我知道有一个 .IndexOf(),但这对我正在做的事情真的有帮助吗?我想要多个具有相同名称但索引不同的控件。

这是一个 Windows 窗体应用程序,我使用的是 Visual Studio 2012。我正在谈论控件,而不是数组/列表;这在 VB 中是可能的,我想知道在 C# 中是否可能。所以我想在剧院里有 30 个座位。我想让每个座位都由一个名为“picSeat”的图片框表示。 VB 允许我以完全相同的方式命名几个对象,并为控件属性“Index”分配一个值。这样,我就可以使用上面的循环在每个图片框中打印“Hello”,只需 3 行代码。

最佳答案

不,这个功能在 C# 中不存在,并且在从经典 VB 到 VB.Net 的过渡中从未实现过。

我通常所做的是将每个有问题的控件放在一个公共(public)父容器中。窗体本身可以工作,但如果您需要将它们与相同类型的其他控件区分开来,GroupBox 或面板控件也可以工作。然后,您可以像这样访问控件:

foreach (var picBox in parentControl.Controls.OfType<PictureBox>())
{
// do something with each picturebox
}

如果你想使用特定的控件,只需写名称即可:

pictureBox6.SomeProperty = someValue;

如果您需要更改在运行时确定的特定控件,通常这是为了响应用户事件:

void PictureBox_Click(object sender, EventArgs e)
{
var picBox = sender As PictureBox;
if (picBox == null) return;

//picBox is now whichever box was clicked
// (assuming you set all your pictureboxes to use this handler)
}

如果您真的真的想要控制数组功能,您可以通过添加代码来创建数组到表单的 Load 事件中来实现:

PictureBox[] pictureBoxes = Me.Controls.OfType<PictureBox>().ToArray();

关于c# - 我可以像在 VB 中那样在 C# 中为控件提供索引属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20147887/

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