0

在我的应用程序中,我在运行时生成多个按钮并将其添加到网格中,如下所示

 for (int i = 0; i < ListOfMainCategories.Count; i++)
            {
                clsMainCategory tempCat = (clsMainCategory)ListOfMainCategories[i];
                ButtonMainMenuCat btn = CreateMainButton(tempCat.CatTitle, i);
                btn.Margin = new Thickness(0, 1, 0, 1); 
                btn.TabIndex = TabIndexNo;
                if (i == 0)
                {
                    buttonHomeMenu = btn;
                }
                btn.AddHandler(ButtonMainMenuSubSubCat.GotKeyboardFocusEvent, new RoutedEventHandler(ButtonMainMenuGotFocus), handledEventsToo: false);
                // stackTableViewMainMenu.Children.Add(btn);
                Grid.SetRow(btn, 1);
                Grid.SetColumn(btn, i + 1);
                gridHeader.Children.Add(btn);

            }

在特定事件之后,我从 Grid 中删除了所有这些按钮。

gridHeader.Children.RemoveRange(0, gridHeader.Children.Count);

在这里,我认为我还需要从内存中删除或处置或卸载这些按钮。那么我该怎么做呢?请建议

4

1 回答 1

1

Yuo 不能处理经典意义上的按钮,因为没有东西可以处理。您在这里处理托管代码。只要没有引用,内存分配就会被垃圾收集器清除。在上面的代码中,您通过路由事件处理程序保留对按钮的引用,因此btn.RemoveHandler在将其从网格中删除之前调用它。

您可以在此处查看有关 WeakEvent 模式的 MSDN 指南:http: //msdn.microsoft.com/en-us/library/aa970850

于 2012-05-14T11:06:20.330 回答