对于我的问题,我想不出一个连贯的搜索词,所以请原谅我之前曾被问过这个问题。
我有24个组合框坐在一个面板上,显示在4行6。
在用户定义了每个组合的值并点击"go“按钮之后,我添加了所有的组合框来列出,这样我就可以在我的程序的另一部分中使用这些值了。
问题是,将组合框添加到列表中的顺序与面板上的可视化布局相比是混乱的,我想定义顺序。目前,它在列表中添加了第9个组合框,然后是第20、第2、第16等。
我试过TabIndex,但那不起作用。
在我手动重命名和重新命名所有的盒子之前,我们将感激地收到任何其他建议。
发布于 2021-01-30 17:37:34
窗体的控件存在于容器控件的Controls集合中,例如,当您向窗体添加面板和按钮,向面板添加两个ComboBox时:
panel1
控件添加到Controls集合中,其顺序与将它们添加到设计器的顺序相同。打开designer.cs,查看InitializeComponent的末尾以查看订单。您还可以使用窗口查看/更改订单。
尽管如此,现在应该很明显,panel1.Controls.OfType<ComboBox>()返回组合框的顺序与您在文档大纲中看到的顺序相同(或者基于它们的z索引,并且与它们的x/y位置没有任何关系)。
您可能希望根据TabIndex或您喜欢的任何其他属性对它们进行排序:
panel1.Controls.OfType<ComboBox>().OrderBy(x=>x.TabIndex) Note
通常,如果要将这些值用于搜索,而不是依赖于值的顺序,更好的方法是创建一个具有几个属性的SearchModel类,将这些属性设置为相应组合框的选定值(手动或使用数据库),然后将搜索模型传递给其他类。
https://stackoverflow.com/questions/65970644
复制相似问题