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);

            }

特定のイベントの後、これらのボタンをすべてグリッドから削除しました。

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 に答える