C# 更新动态生成的StatusStrip中的标签

C# 更新动态生成的StatusStrip中的标签,c#,C#,我有一个类,它的功能是根据程序中其他地方的首选项和条件返回状态条。然后将返回的状态条添加到表单中 如果我使用Visual Studio的设计器,我将能够通过标签的名称访问条带中的标签,因为它们是在窗体的类中创建的。由于该条带是在另一个类中创建的,我不确定如何访问返回条带中的标签 //statusStrip is declared as a new StatusStrip() at beginning of this form's class statusStrip = myStripBuilde

我有一个类,它的功能是根据程序中其他地方的首选项和条件返回状态条。然后将返回的状态条添加到表单中

如果我使用Visual Studio的设计器,我将能够通过标签的名称访问条带中的标签,因为它们是在窗体的类中创建的。由于该条带是在另一个类中创建的,我不确定如何访问返回条带中的标签

//statusStrip is declared as a new StatusStrip() at beginning of this form's class
statusStrip = myStripBuilderClass.GenerateStatusStrip();
this.Controls.Add(statusStrip);
//statusStrip now appears in form with the appropriate labels and such.

假设在statusStrip中有一个名为mousePosition的标签,我该怎么做才能访问mousePosition.Text?当为条带或条带项目使用Add时,实际上并没有将其添加到类中,因此intellisense不会反映已添加的内容。

与所有其他控件一样,StatusStrip有一个控件集合,您可以通过其名称访问成员

因此,如果您的StatusStrip“StatusStrip”上有一个标签“mousePosition”,您可以如下设置其文本:

statusStrip.Controls["mousePosition"].Text = "my mouse is at home";
很明显,你希望所有标签都有一个好的名字,但是“mousePosition”听起来很像


至于IntelliSense,恐怕您将不得不放弃它的支持。

只需从StatusStrip派生您自己的类即可。现在,您可以添加私有变量,比如存储标签引用的变量,并添加更新标签的公共UpdateMousePosPoint方法。您可以在设计器中使用它,直接从工具箱中删除它。您知道描述它的正确方法,或者在上面有任何文档吗?我从未见过像数组这样用字符串访问内容的东西。我假设它是该语言的一个特性?与其说它是一个带有字符串访问器的数组,不如说它是一个带有两个数组访问器的集合。类型为,它有多个接口。您可以作为项[Int32]或项[String]访问其项。您应该查找允许类或结构的实例像数组一样被索引的对象。这对于您自己定义的类也是可能的。谢谢。我从来不知道。因为我是通过Items集合添加标签的,所以我可以通过statusStrip.Items[string].Text来访问标签以进行修改。确实如此。您会注意到,对于控件集合,只定义了一个getter;因此,与实际数组相比,不能以这种方式设置任何值。但是通过名字访问集合的成员真的很好。但是,在您自己的类中,您可以决定实现getter和setter。。如果你很乐意这样做,你可能想接受答案…@ USSR4040530:请考虑通过点击箭头下面的答案左边的复选标记来接受答案。这不仅会为我们俩赢得一点声誉;更重要的是:它会将问题标记为已回答。这有助于保持网站的良好状态,因此没有人需要检查您是否仍然需要帮助。。