list - Winforms控制控件
问题描述
我想不出一个连贯的搜索词来解决我的问题,所以如果之前有人问过这个问题,请原谅我。
我有 24 个组合框位于面板控件上,显示为 4 行,每行 6 个。
在用户为每个组合定义值并点击“开始”按钮后,我将所有组合框添加到列表中,以便可以在程序的另一部分中使用这些值。
问题是组合框添加到列表中的顺序与面板上的视觉布局相比是混乱的,我想定义顺序。目前,它首先将第 9 个组合框添加到列表中,然后是第 20 个、第 2 个、第 16 个等。
我尝试了 TabIndex,但没有奏效。
在我手动重命名和重新标记所有框之前,我们将不胜感激地收到任何其他建议。
解决方案
表单的控件存在于Controls
容器控件的集合中,例如,当您将一个面板和一个按钮添加到一个表单并将两个组合框添加到面板时,则:
- Form.Controls 包含 button1 和 panel1
- Panel.Controls 包含 comboBox1 和 comboBox2
控件被添加到Controls
集合中,其顺序与您将它们添加到设计器中的顺序相同。打开designer.cs,看InitializeComponent的末尾看看顺序。您还可以使用“文档大纲”窗口查看/更改顺序。
也就是说,现在应该很明显panel1.Controls.OfType<ComboBox>()
返回组合框的顺序与您在Document Outline中看到的顺序相同(或基于它们的 z-index,并且与它们的 x/y 位置无关)。
您可能希望根据 TabIndex 或您喜欢的任何其他属性对它们进行排序:
panel1.Controls.OfType<ComboBox>().OrderBy(x=>x.TabIndex)
笔记
一般来说,如果您要使用这些值进行搜索,而不是依赖于值的顺序,一个更好的主意是创建一个SearchModel
具有一些属性的类,将这些属性设置为相应组合的选定值框(手动或使用数据绑定)然后将搜索模型传递给其他类。
推荐阅读
- bash - Bash echo 3 变量(2 翻译,1 作为文本)问题
- javascript - Progressive Web App:离线缓存在移动设备上不起作用
- django - 保存模型表单对象后如何从 django FileField 获取多个文件
- python - 如何绘制大量具有不同颜色的点?
- javascript - 在 iOS 中使用 JavaScript 在 PWA 中显示服务器生成的图像
- mongodb - 是否可以通过 ELB 提供对托管在 aws ec2(私有子网)中的 mongodb 实例的访问
- php - 表格中的千位分隔符
- python - Pytorch 梯度尚未计算
- python - 如何保存训练有素的 FCN 模型并在训练有素的 FCN 模型上测试新图像?
- .net - Web 部署任务失败。(此服务器环境不支持创建新应用程序)