[C# Debug DataBinding met ClickEvent]

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Ik heb onderstaande code geminimaliseerd.
Ik vraag me af waarom het ClickEvent niet afvuurt als je een breakpoint hebt geplaatst.

VS2010 Professional SP1 Win7 x64

Ondervinden jullie dit gedrag ook? En heeft iemand hiervoor een verklaring.
Is dit een bug in .NET?

Gecompileerd met .NET 4.0

C#:
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
64
65
66
using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace DebuggingClickEvent
{
    public partial class Form1 : Form
    {
        //Drag on a form:
        //Textbox with the name: textBox1
        //Button with the Click event directed to button1_Click

        //Run:
        //Run the application
        //Click on the button
        //Messagebox appears
        //Set a breakpoint on the line ' _text = value;'
        //Change the text in the textbox
        //Click on the button
        //The messagebox does not appear

        public Form1()
        {
            InitializeComponent();

            TextClass t = new TextClass();
            textBox1.DataBindings.Add("Text", t, "Text");
            t.Text = "This is a default text";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("I AM CLICKED");
            MessageBox.Show("Clicked");
        }
    }

    class TextClass : NotifyPropertyChanged
    {
        private string _text = string.Empty;

        public string Text
        {
            get { return _text; }
            set
            {
                if (!_text.Equals(value))
                {
                    //Put a breakpoint here
                    _text = value;
                    RaisePropertyChanged("Text");
                }
            }
        }
    }

    class NotifyPropertyChanged : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged = delegate { };

        public void RaisePropertyChanged(string propertyname)
        {
            PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyname));
        }
    }
}

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
standaard gedrag voor getters en setters is dat eroverheen gejumped wordt met debuggen, vziw.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Dat heb ik nog nooit meegemaakt dat als je een volledige property implementeerd dat de debugger daar overheen stapt.

Het punt is dat mijn Click event niet aangeroepen wordt.

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


Acties:
  • 0 Henk 'm!

  • Grompie
  • Registratie: Maart 2010
  • Laatst online: 15-04-2024
Ben je zeker dat de naam van het click event nog correct is? Controleer best eens in Properties -> Events -> Click zou in jouw geval "button1_Click" moeten heten

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Schrijf eens letterlijk: System.Diagnostics.Debugger.Break(); ?

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Grompie schreef op woensdag 09 november 2011 @ 14:45:
Ben je zeker dat de naam van het click event nog correct is? Controleer best eens in Properties -> Events -> Click zou in jouw geval "button1_Click" moeten heten
Zoals aangegeven attach je het click event aan de button. Heb jij bovenstaande code al uitgevoert?
Snake schreef op woensdag 09 november 2011 @ 14:50:
Schrijf eens letterlijk: System.Diagnostics.Debugger.Break(); ?
MSDN: Break Method
Ik begrijp niet echt wat ik hiermee moet ...

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Niets! Ik had verkeerd gelezen :')

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • HeSitated
  • Registratie: April 2009
  • Laatst online: 03-12-2024
Spiral schreef op woensdag 09 november 2011 @ 13:14:
Dat heb ik nog nooit meegemaakt dat als je een volledige property implementeerd dat de debugger daar overheen stapt.

Het punt is dat mijn Click event niet aangeroepen wordt.
FYI: Hier functioneert het (uiteraard :)) wel...

Punten om op te letten:
  • Start je in Debug-mode (alhoewel hier zelfs in Release-mode gestopt wordt)
  • Zoek eens met "Find Usages" (rechter muisknop op "button1_Click")
  • Nergens een verdwaalde DebuggerStepThrough staan? (Het is tenslotte een partial class)
  • Geen Conditions e.d. ingesteld?

Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
HeSitated schreef op woensdag 09 november 2011 @ 17:03:
[...]

FYI: Hier functioneert het (uiteraard :)) wel...

Punten om op te letten:
  • Start je in Debug-mode (alhoewel hier zelfs in Release-mode gestopt wordt)
  • Zoek eens met "Find Usages" (rechter muisknop op "button1_Click")
  • Nergens een verdwaalde DebuggerStepThrough staan? (Het is tenslotte een partial class)
  • Geen Conditions e.d. ingesteld?
Hmmz ik heb er zelfs een apart project van gemaakt om dit te reproduceren. en dat is de code in TS
Find usages geeft aan dat er maar 1 resultaat is nl. in de designer.cs (wat ik ook had verwacht).

En het werkt prima @runtime (zonder breakpoint) namelijk wel, dat had ik niet vermeld in TS.

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


Acties:
  • 0 Henk 'm!

  • HeSitated
  • Registratie: April 2009
  • Laatst online: 03-12-2024
Spiral schreef op woensdag 09 november 2011 @ 17:20:
Hmmz ik heb er zelfs een apart project van gemaakt om dit te reproduceren. en dat is de code in TS
Find usages geeft aan dat er maar 1 resultaat is nl. in de designer.cs (wat ik ook had verwacht).

En het werkt prima @runtime (zonder breakpoint) namelijk wel, dat had ik niet vermeld in TS.
Bij de opdrachtgever waar ik nu zit heb ik op mijn machine (XP met VS2005) het probleem met meerdere classes met eenzelfde naam in verschillende namespaces en/of assemblies. Als ik dan een breekpunt zet, dan krijg ik alle classes met die naam een break... 8)7

Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Fijn dat jij het iig uitgeprobeerd hebt. Ik zal het a.s. vrijdag nog even uitproberen bij een collega.

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


Acties:
  • 0 Henk 'm!

  • Spiral
  • Registratie: December 2005
  • Niet online
Mijn collega heeft het kunnen reproduceren. De button krijgt gewoon geen focus meer op het moment dat je de muis op de knop klikt. De visual studio debugger neemt het meteen over waardoor de button nooit de focus krijgt.

Ik vind het een beetje vreemd ...

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles

Pagina: 1