C# winform中擷取多重布局控制項屬性

來源:互聯網
上載者:User

標籤:布局   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中擷取多重布局控制項屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.