Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V aplikacích Windows Forms, které cílí na verze rozhraní .NET Framework počínaje verzí 4.6.1, může vlastní IMessageFilter.PreFilterMessage implementace bezpečně filtrovat zprávy, když je volána metoda Application.FilterMessage, pokud implementace IMessageFilter.PreFilterMessage.
Provede jednu nebo obě z následujících možností:
Přidá filtr zpráv voláním AddMessageFilter metody.
Odebere filtr zpráv voláním RemoveMessageFilter metody. metoda.
Dále pumpuje zprávy voláním Application.DoEvents metody.
Dopad
Tato změna má vliv pouze na aplikace Windows Forms, které cílí na verze rozhraní .NET Framework počínaje rozhraním .NET Framework 4.6.1.
U aplikací Windows Forms, které cílí na předchozí verze rozhraní .NET Framework, takové implementace v některých případech vyvolají IndexOutOfRangeException výjimku, když je metoda Application.FilterMessage zavolána.
Zmírnění
Pokud je tato změna nežádoucí, můžou se aplikace, které cílí na rozhraní .NET Framework 4.6.1 nebo novější verzi, odhlásit přidáním následujícího nastavení konfigurace do <oddílu runtime> konfiguračního souboru aplikace:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=true" />
</runtime>
Kromě toho se aplikace, které cílí na předchozí verze rozhraní .NET Framework, ale běží v rozhraní .NET Framework 4.6.1 nebo novější verzi, můžou k tomuto chování přihlásit přidáním následujícího nastavení konfigurace do <části runtime> konfiguračního souboru aplikace:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=false" />
</runtime>