Podczas uruchamiania procedur korzystających z programu Excel zazwyczaj wyłączam niektóre ustawienia aplikacji na początku procedury, a następnie włączam je ponownie po zakończeniu procedury.Wyłącz aktualizację ekranu i włącz ją ponownie, jeśli była włączona?
Kod do toczenia ustawienia aplikacji i wyłączanie:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XLTimeTracker
{
class API
{
public static void TurnAppSettingsOff()
{
AddinModule.CurrentInstance.ExcelApp.EnableEvents = false;
AddinModule.CurrentInstance.ExcelApp.ScreenUpdating = false;
}
public static void TurnAppSettingsOn()
{
if (AddinModule.CurrentInstance.ExcelApp == null) return;
AddinModule.CurrentInstance.ExcelApp.EnableEvents = true;
AddinModule.CurrentInstance.ExcelApp.ScreenUpdating = true;
}
}
}
Ja nazywam to procedury w następujący sposób:
API.TurnAppSettingsOff();
// my code
API.TurnAppSettingsOn();
Działa to dobrze.
Ale powiedz, że chcę tylko włączyć ustawienia aplikacji, które były włączone, zanim uruchomiłem API.TurnAppSettingsOff()
. Jaki byłby dobry sposób, aby to zakodować?
Niektóre myśli:
- Chyba musiałbym zapisać poprzedni stan ustawieniach aplikacji jakoś. Na przykład pisząc:
Boolean screenUpdating = AddinModule.CurrentInstance.ExcelApp.ScreenUpdating;
Chciałbym końcowy wynik będzie prawidłowy, nawet jeśli funkcja, która włącza i wyłącza AppSettings wzywa również inną funkcję, która zamienia ustawienia aplikacji i wyłączać.
ja nie wiem, czy to najlepiej ustawić wszystkie ustawienia za pomocą jednego polecenia, takie jak
API.TurnAppSettingsOff()
lub jeśli byłoby rozsądniej użytkownikAPI.TurnScreenUpdatingOff()
iAPI.TurnEventsOff()
.
Bez wyjaśnienia, w jaki sposób operator może to wykorzystać, nie jest to nic więcej niż komentarz. – Sayse
Przygotowuję przykład właśnie w tych chwilach. –