码迷,mamicode.com
首页 > Windows程序 > 详细

C# winform中获取多重布局控件属性

时间:2015-01-09 12:44:10      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:布局   winform   控件   c#   

问题描述:

在一个form窗体中定义了一个tabcontrol控件,tabcontrol包含多个page,每个page有自己的panel容器,容器里面有自定义的webnavigationbox控件,webnavigationbox控件中又包含了一个textbox控件。

现在要获取被选中的一个标签页的的textbox控件的文本内容。


思路:在tabselected响应事件中添加代码才能实时获取


注意:如果使用一下代码将会出错

 

_tabs.Selected += new System.Windows.Forms.TabControlEventHandler(_tabs_Selected);//绑定响应函数


 private void _tabs_Selected(object sender, TabControlEventArgs e)
 {
var navbox = new webnavigationbox();

var tab = _tabs.selected();

var textbox = new Textbox();

if(tab == null)

url= null;

else

{

foreach(var c in tab.controls)

{

if(c is webnagitionbox)

navbox = (webnavigationbox)c;

}

foreach(var c in navbox .controls)

{

if(c is Textbox)

textbox = (Textbox)c;

}

if(navbox == null)

url= null;

else

url = textbox.text;

}

}


问题出现了,这里的代码是在tabcontrol中找webnavigationbox 然后在webnavigationbox中找textbox,忽略了panel这个容器的中间层作用,导致了每次访问url都是null.

解决思路很简单,按照层次关系foreach就行了,大致代码如下:

  if (tab != null)
            {
                foreach (var c in tab.Controls)
                {
                    if (c is Panel)
                    {
                        mypanle = (Panel)c;
                    }
                }
                foreach (var c in mypanle.Controls)
                {
                    if (c is WebNavigationBox)
                    {
                        navbox = (WebNavigationBox)c;
                    }
                }
                if (navbox.Address != null)
                {
                    url = navbox.Address;
                    title = tab.Text;
                }
                else
                {
                    url = "http://www.baidu.com";                   
                }

}

C# winform中获取多重布局控件属性

标签:布局   winform   控件   c#   

原文地址:http://blog.csdn.net/wy7980/article/details/42551771

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!