![](/img/trans.png)
[英]WPF c# how to add a user control to a panel children dynamically that bubbles/tunnels from UC to Panel
[英]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
上應用索引
我建議使用First
或FirstOrDefault
擴展方法來檢索第一個元素並將其刪除。
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.