Bonjour,
Voici mon problème, j'ai besoin de créer un bouton un peu spécial pour une application. Pour cela je créé une class library (dll), avec le code suivant :
Très simple en fait, j'ai juste rajouté une gestion interne pour un message windows et la propriété KeyStr.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Composant { public partial class NoFocusButton : Button { public NoFocusButton() { } //keystroke [Category("Behavior"), Description("Keystroke simulée."), DefaultValue("")] public string KeyStr { get { if (KeyStr == "") return Text; else return KeyStr; } set { KeyStr = value; } } protected override void OnPaint(PaintEventArgs pe) { // TODO: Add custom paint code here // Calling the base class OnPaint base.OnPaint(pe); } private const int WM_MOUSEACTIVATE = 0x0021; private const int MA_NOACTIVATE = 0x0003; protected override void WndProc(ref Message m) { //message d'activation if (m.Msg == WM_MOUSEACTIVATE) { //refuser le focus m.Result = (IntPtr)MA_NOACTIVATE; } else { //gestion standard base.WndProc(ref m); } } } }
Le problème vient de la propriété KeyStr. Quand j'essaie de poser mon NoFocusButton sur une winform, tout semble normal, ça s'affiche. Par contre, sitôt que j'essaie d'afficher la fenêtre d'édition de propriété, vs2005 se ferme tout seul, sans message d'erreurs.
Quelqu'un a une idée?
J'ai déjà perdu 1 jour et demi à chercher, j'ai essayé sous VS2005, puis j'ai téléchargé la version express, le service pack 1 beta, rien ne change.
Je suis ouvert à toute suggestion, Merci d'avance.
Partager