Salut,

Je viens de créer un PropertyPad personalisé qui doit m'aficher quelques propriétés d'un element selectionné dans un arbre. Celui change toute les demis secondes.

Ma PropertyPad s'actualise a chaque changement de l'element selectionné. Ce que je voudrais maintenant faire, c'est au moment d'editer une propriété dans la PropertyGrid, je voudrais stopper l'actualisation, pour pouvoir editer tranquillement.

Je pensais m'enregistré a l'event Property.MouseClick += new MouseEventHandler(GridGotFocusHandler); mais je ne reçois jamais cet evenement.

Une idée pour faire cela?

PS: Ci-dessous mon code, ou je me registre a l'event et le traitement que je veux donner.

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
        /// <summary>
        /// Public Constructor.
        /// Create new Property Pad based on #develop, which display the Application.SelectedNodes.
        /// </summary>
        public NodePropertyPad()
        {
            _instance = this;
            _panel = new Panel();
 
            _grid = new PropertyGrid();
            _grid.PropertySort = PropertyService.Get("FormsDesigner.DesignerOptions.PropertyGridSortAlphabetical", false) ? PropertySort.Alphabetical : PropertySort.CategorizedAlphabetical;
            _grid.Dock = DockStyle.Fill;
 
            _grid.MouseClick += new MouseEventHandler(GridGotFocusHandler); 
 
            if (Application.Instance.SelectedNodes.Count != 0)
                _grid.SelectedObject = Application.Instance.SelectedNodes[0];
 
            Application.Instance.SelectedNodesChanged += new EventHandler(SelectedNodesChangedHandler);
            _comboBox = new ComboBox();
            _comboBox.Dock = DockStyle.Top;
            _comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            _comboBox.DrawMode = DrawMode.OwnerDrawFixed;
            _comboBox.Sorted = true;
 
            _comboBox.DrawItem += new DrawItemEventHandler(ComboBoxDrawItem);
            _comboBox.MeasureItem += new MeasureItemEventHandler(ComboBoxMeasureItem);
 
            _panel.Controls.Add(_grid);
            _panel.Controls.Add(_comboBox);
        }
 
        void GridGotFocusHandler(object sender, EventArgs e)
        {
            _grid.SuspendLayout();
            Application.Instance.SelectedNodesChanged -= new EventHandler(SelectedNodesChangedHandler);
        }