Dans Microsoft Access, il existait une méthode simple pour désactiver les mises à jour d'écran en définissant Echo = False. Existe-t-il un équivalent dans VB.NET pour WinForms? J'ai une situation où j'essaie d'empêcher les utilisateurs de voir les contrôles scintiller pendant qu'ils sont mis à jour. Je pourrais probablement résoudre le problème en le codant différemment, mais je préférerais l'éviter si je le peux.Désactivation de l'écho d'écran dans VB.NET
Répondre
Ce que vous cherchez à faire est de suspendre et de reprendre le redessin de votre formulaire. Il n'y a pas d'API gérée pour cela, mais c'est un P/Invoke assez trivial pour le faire. Je ne me souviens pas de la syntaxe VB.NET pour déclarer des fonctions externes, mais cet exemple C# devrait vous donner les informations dont vous avez besoin.
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
private const int WM_SETREDRAW = 11;
public static void SuspendDrawing(Control target)
{
SendMessage(target.Handle, WM_SETREDRAW, false, 0);
}
public static void ResumeDrawing(Control target)
{
SendMessage(target.Handle, WM_SETREDRAW, true, 0);
target.Refresh();
}
En C# (où cela représente votre formulaire):
this.SuspendLayout();
// Make your changes
this.ResumeLayout(false);
Cela n'a aucun effet sur le redessin, seulement les opérations de mise en page (ancre, dock, contrôles de disposition, etc.) –
Oui, je crains que cela n'arrête pas le scintillement. – Billious
- 1. Désactivation de msgbox dans l'accès
- 2. Désactivation d'une variable dans Velocity
- 3. Texte Désactivation du champ dans NetBeans
- 4. Désactivation temporisée du bouton dans pygtk
- 5. Désactivation du bouton dans le problème AS3
- 6. Désactivation de la création de fichiers d'échange dans vim
- 7. Désactivation de l'insertion de clé json dans Rails
- 8. Désactivation de la vérification de l'exécution dans Visual Studio
- 9. Désactivation de la sélection de texte dans DocumentViewer
- 10. Désactivation des règles StyleCop
- 11. Problème lors de la désactivation du regroupement HTTP dans AXIS2
- 12. Désactivation du type de fichier + S dans Perforce
- 13. Désactivation de la recherche dans un FlowFocument WPF
- 14. Désactivation des contrôles de style Vista dans l'application
- 15. Désactivation d'une fenêtre de code dans Visual Studio
- 16. Désactivation de SQL Server 2008 Express
- 17. SendKeys.Send et désactivation des modificateurs de touches
- 18. Désactivation de l'animation GIF en HTML
- 19. Désactivation complète du proxy WCF
- 20. Windows Désactivation de l'adaptateur réseau via Powershell
- 21. Contrôle de tabulation dans VB.Net
- 22. contrôle de minuterie dans vb.net
- 23. Implémentation de-ede2 dans vb.net
- 24. Désactivation du verrouillage de compte avec SqlMembershipProvider
- 25. Désactivation de la sortie Log4J en Java
- 26. Désactivation de l'intégration EnterpriseLibrary avec VS2008
- 27. Désactivation de HttpModule sur certains emplacements
- 28. iPhone Désactivation des boutons UIActionSheet
- 29. Casting dans VB.NET
- 30. VLookup dans Datagridviews (VB.NET)
Merci pour l'aide - j'ai trouvé un moyen de déclarer la fonction dans VB.NET, comme suit: Public Declare fonction SendMessage Lib "user32.dll" _ Alias "SendMessage" (ByVal hwnd As Integer, _ ByVal WMSG Comme Int32, _ ByVal wParam As Boolean, _ ByVal lParam Comme Int32) As Integer Cependant quand je l'appelle, il se présente avec une erreur disant "Impossible de trouver un point d'entrée nommé 'SendMessage' dans la DLL 'user32.dll'. Des idées? Je ne suis pas très expérimenté avec les appels d'API! – Billious
OK, résolu le problème. Trouvé la déclaration correcte ici: http://www.pinvoke.net/default.aspx/user32.SendMessage. Fonctionne comme un charme maintenant, merci de m'indiquer dans la bonne direction! – Billious