winform 中 遍历整个窗体中所有的控件,他按照一个怎么样的顺序来,遍历的呢?

不解,,请那位大侠,,帮帮忙,,为什么?我设置了tabIndex值,但是并没有改变遍历时的顺序,我又在InitializeComponent()设计器方法中,改变控件显示... 不解,,请那位大侠,,帮帮忙,,
为什么?我设置了tabIndex 值 ,但是并没有改变遍历时的顺序,
我又在InitializeComponent()设计器方法中,改变控件显示的位置,还是没有效果呢?
他的遍历顺序是按照最后一个控件来,遍历的,,
所以导致我在验证的时候,如果用遍历整个窗体中控件来研制是否为空值的话,就不行了。。
急啊
!!!
在线等,,,帮帮忙,,,谢谢了。。
展开
 我来答
lcg1986
2011-03-28 · TA获得超过3374个赞
知道大有可为答主
回答量:1858
采纳率:90%
帮助的人:1594万
展开全部
控件初始化的时候,都是用Controls.Add来添加的,Controls类似一个Array,最后Add的控件,肯定是在Array的第一个..遍历的顺序应该是Add的倒序来的...最后一个Add的控件被第一个选出来.
按照这个思路,我相信你可以想到很多种解决办法了...
随风z9pd
2011-03-28 · TA获得超过777个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:581万
展开全部
tabindex的作用是用户在按tab键时,控件获取焦点的顺序。
窗体中遍历控件的顺序,是根据你添加那些控件的顺序的反序。
比如你添加控件的顺序为"按钮,文本框,单选按钮",那么遍历时候就是"单选按钮,文本框,按钮"。
追问
是的啊!所以我想按照正常的顺序提示给用户信息、、
追答
因为添加的控件的顺序可能不是按界面上看到的顺序,或是以后可能会调整界面控件位置,所以如果你想按顺序给用户提示,就最好别用遍历了。
手动按控件顺序一个个控件验证吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-02
展开全部
循环遍历控件验证空间是否为空
可以加上判断条件
例如
foreach (Control ctl in this.Controls)
{
if (ctl is TextBox || ctl is ComboBox )
{
……
}
}
不知道你是否明白了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友801b91b
2011-03-28 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1666万
展开全部
用一个tabIndex的从小到大的循环
里面嵌套控件的遍历,判断控件ID是否为tabIndex,如果是,则作相应操作
给你个示例(此示例没有做某个控件下面有控件子集的判断,如果有需要你自己加上)
for (int tabID = 1; tabID < 100; tabID++)
{
foreach (Control tmpCtrl in this.Controls)
{
if (tmpCtrl.TabIndex == tabID)
MessageBox.Show(tmpCtrl.Name);
}
}

有事请HI我:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goddess111
2011-03-28 · 超过16用户采纳过TA的回答
知道答主
回答量:86
采纳率:100%
帮助的人:44.9万
展开全部
tabindex无法变更遍历顺序的
你不需要 非用foreach(Control item in this.Controls){ if(item.text==""){ ...}}
这种来循环
你用 for(int i=this.Controls[i]-1;i>-1;i--){if(this.Controls[i]).Text==""{.....}}
这样来循环不就完了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ice1835
2011-03-28
知道答主
回答量:21
采纳率:0%
帮助的人:17.1万
展开全部
支持lcg1986 的说法
不过补充一点
因为Control添加的时候 它还分父层与子层
所以还要一级一级递归才找到所有
呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式