簡體   English   中英

如何從C#中的面板控件中Dispose()一個特定的User控件?

[英]How to Dispose() a specific User control from panel control in C#?

我想從面板中放置特定類型的用戶控件。 現在,我正在使用foreach循環來配置User控件。

foreach (CTRL.box bx in RightPanel.Controls.OfType<CTRL.box>())
{
     bx.Dispose();
}

但是它不能正常工作。 在谷歌檢查時,我發現以下代碼。

while(tabControlToClear.Controls.Count > 0)
{ 
var tabPage = tabControlToClear.Controls[0];
tabControlToClear.Controls.RemoveAt(0);
tabPage.Dispose(); 

// Clear out events.

foreach (EventHandler subscriber in tabPage.Click.GetInvocationList())
{
    tabPage.Click -= subscriber;
}
}

我正在嘗試執行此操作,但是對我來說,這是我需要處理的特定用戶控件。 它們是我的表單中需要的其他用戶控件。 總的來說,我想從我的形式處置用戶控制。

while (RightPanel.Controls.OfType<CTRL.box>().Count() > 0)
{
      var panel = RightPanel.Controls.OfType<CTRL.box>()[0];//Here i am getting error "Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.IEnumerable<Project_Server.CTRL.box>'"
}

誰能幫我解決此錯誤。

錯誤非常清楚,您無法在IEnumerable上應用索引

我建議使用FirstFirstOrDefault擴展方法來檢索第一個元素並將其刪除。

var panel = RightPanel.Controls.OfType<CTRL.box>().FirstOrDefault();
if(panel != null) 
{
    //logic
}

如果您想刪除所有CTRL.box類型的控件, CTRL.box使用此選項。

List<Control> controls= RightPanel.Controls.OfType<CTRL.box>().ToList();

foreach(Control c in controls)
{
    RightPanel.Controls.Remove(c);
    c.Dispose();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM