Methode die mit EventHandler verbunden ist ermitteln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Methode die mit EventHandler verbunden ist ermitteln

    Gibt es eine Möglichkeit zur Laufzeit (mit Reflection) die Methoden festzustellen, die mit dem Click-Event eines Controls verbunden sind (.NET
    Framework 1.1)?
    Ich möchte nämlich versuchen, zur Laufzet die verbundenen Methoden durch eine ander Methode zu tauschen. Leider habe ich bis jetzt nicht herausfinden können wie ich zu den entsprechenden Informationen gelangen kann. Wenn ich den Code debuge kann ich mir die gesuchte Information ansehen (siehe Anhang: csharp_debug_menuitem_click.jpg, Markierung zeigt die mit dem Click-Event verbundene Methode, Breakpoint bei Methode btnStart_Click).

    Ich bin über jede Hilfe dankbar.

    Quellcode

    1. using System;
    2. using System.Drawing;
    3. using System.Collections;
    4. using System.ComponentModel;
    5. using System.Windows.Forms;
    6. using System.Data;
    7. namespace EventMethods
    8. {
    9. public class FrmMain : System.Windows.Forms.Form
    10. {
    11. private System.ComponentModel.Container components = null;
    12. private System.Windows.Forms.MenuItem mnuDatei;
    13. private System.Windows.Forms.MenuItem mnuHilfe;
    14. private System.Windows.Forms.MenuItem mnuOeffnen;
    15. private System.Windows.Forms.MenuItem mnuSpeichern;
    16. private System.Windows.Forms.MenuItem mnuSpeicherUnter;
    17. private System.Windows.Forms.MainMenu mnuMain;
    18. private System.Windows.Forms.MenuItem mnuSeparator;
    19. private System.Windows.Forms.MenuItem mnuUeber;
    20. private System.Windows.Forms.TextBox txtResult;
    21. private System.Windows.Forms.Button btnStart;
    22. private System.Windows.Forms.Button btnBeenden;
    23. private System.Windows.Forms.MenuItem mnuBeenden;
    24. public FrmMain()
    25. {
    26. InitializeComponent();
    27. }
    28. protected override void Dispose( bool disposing )
    29. {
    30. if( disposing )
    31. {
    32. if (components != null)
    33. {
    34. components.Dispose();
    35. }
    36. }
    37. base.Dispose( disposing );
    38. }
    39. private void mnuBeenden_Click(object sender, System.EventArgs e)
    40. {
    41. MessageBox.Show("Beenden");
    42. }
    43. private void mnuSpeicherUnter_Click(object sender, System.EventArgs e)
    44. {
    45. MessageBox.Show("Speichern unter");
    46. }
    47. private void mnuSpeichern_Click(object sender, System.EventArgs e)
    48. {
    49. MessageBox.Show("Speichern");
    50. }
    51. private void mnuOeffnen_Click(object sender, System.EventArgs e)
    52. {
    53. MessageBox.Show("Öffnen");
    54. }
    55. private void mnuUeber_Click(object sender, System.EventArgs e)
    56. {
    57. MessageBox.Show("Über");
    58. }
    59. private void btnStart_Click(object sender, System.EventArgs e)
    60. {
    61. // TODO.
    62. }
    63. private void btnBeenden_Click(object sender, System.EventArgs e)
    64. {
    65. this.Close();
    66. }
    67. #region Windows Form Designer generated code
    68. private void InitializeComponent()
    69. {
    70. this.mnuMain = new System.Windows.Forms.MainMenu();
    71. this.mnuDatei = new System.Windows.Forms.MenuItem();
    72. this.mnuHilfe = new System.Windows.Forms.MenuItem();
    73. this.mnuOeffnen = new System.Windows.Forms.MenuItem();
    74. this.mnuSpeichern = new System.Windows.Forms.MenuItem();
    75. this.mnuSpeicherUnter = new System.Windows.Forms.MenuItem();
    76. this.mnuSeparator = new System.Windows.Forms.MenuItem();
    77. this.mnuBeenden = new System.Windows.Forms.MenuItem();
    78. this.mnuUeber = new System.Windows.Forms.MenuItem();
    79. this.txtResult = new System.Windows.Forms.TextBox();
    80. this.btnStart = new System.Windows.Forms.Button();
    81. this.btnBeenden = new System.Windows.Forms.Button();
    82. this.SuspendLayout();
    83. //
    84. // mnuMain
    85. //
    86. this.mnuMain.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
    87. this.mnuDatei,
    88. this.mnuHilfe});
    89. //
    90. // mnuDatei
    91. //
    92. this.mnuDatei.Index = 0;
    93. this.mnuDatei.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
    94. this.mnuOeffnen,
    95. this.mnuSpeichern,
    96. this.mnuSpeicherUnter,
    97. this.mnuSeparator,
    98. this.mnuBeenden});
    99. this.mnuDatei.Text = "Datei";
    100. //
    101. // mnuHilfe
    102. //
    103. this.mnuHilfe.Index = 1;
    104. this.mnuHilfe.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
    105. this.mnuUeber});
    106. this.mnuHilfe.Text = "Hilfe";
    107. //
    108. // mnuOeffnen
    109. //
    110. this.mnuOeffnen.Index = 0;
    111. this.mnuOeffnen.Text = "Öffnen";
    112. this.mnuOeffnen.Click += new System.EventHandler(this.mnuOeffnen_Click);
    113. //
    114. // mnuSpeichern
    115. //
    116. this.mnuSpeichern.Index = 1;
    117. this.mnuSpeichern.Text = "Speichern";
    118. this.mnuSpeichern.Click += new
    119. System.EventHandler(this.mnuSpeichern_Click);
    120. //
    121. // mnuSpeicherUnter
    122. //
    123. this.mnuSpeicherUnter.Index = 2;
    124. this.mnuSpeicherUnter.Text = "Speichern unter...";
    125. this.mnuSpeicherUnter.Click += new
    126. System.EventHandler(this.mnuSpeicherUnter_Click);
    127. //
    128. // mnuSeparator
    129. //
    130. this.mnuSeparator.Index = 3;
    131. this.mnuSeparator.Text = "-";
    132. //
    133. // mnuBeenden
    134. //
    135. this.mnuBeenden.Index = 4;
    136. this.mnuBeenden.Text = "Beenden";
    137. this.mnuBeenden.Click += new System.EventHandler(this.mnuBeenden_Click);
    138. //
    139. // mnuUeber
    140. //
    141. this.mnuUeber.Index = 0;
    142. this.mnuUeber.Text = "Über";
    143. this.mnuUeber.Click += new System.EventHandler(this.mnuUeber_Click);
    144. //
    145. // txtResult
    146. //
    147. this.txtResult.Anchor =
    148. ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top
    149. | System.Windows.Forms.AnchorStyles.Bottom)
    150. | System.Windows.Forms.AnchorStyles.Left)
    151. | System.Windows.Forms.AnchorStyles.Right)));
    152. this.txtResult.Location = new System.Drawing.Point(8, 8);
    153. this.txtResult.Multiline = true;
    154. this.txtResult.Name = "txtResult";
    155. this.txtResult.Size = new System.Drawing.Size(276, 203);
    156. this.txtResult.TabIndex = 0;
    157. this.txtResult.Text = "";
    158. //
    159. // btnStart
    160. //
    161. this.btnStart.Anchor =
    162. ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom
    163. | System.Windows.Forms.AnchorStyles.Left)));
    164. this.btnStart.Location = new System.Drawing.Point(8, 219);
    165. this.btnStart.Name = "btnStart";
    166. this.btnStart.TabIndex = 1;
    167. this.btnStart.Text = "Start";
    168. this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
    169. //
    170. // btnBeenden
    171. //
    172. this.btnBeenden.Anchor =
    173. ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom
    174. | System.Windows.Forms.AnchorStyles.Right)));
    175. this.btnBeenden.DialogResult = System.Windows.Forms.DialogResult.Cancel;
    176. this.btnBeenden.Location = new System.Drawing.Point(212, 219);
    177. this.btnBeenden.Name = "btnBeenden";
    178. this.btnBeenden.TabIndex = 2;
    179. this.btnBeenden.Text = "Beenden";
    180. this.btnBeenden.Click += new System.EventHandler(this.btnBeenden_Click);
    181. //
    182. // FrmMain
    183. //
    184. this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    185. this.CancelButton = this.btnBeenden;
    186. this.ClientSize = new System.Drawing.Size(292, 251);
    187. this.Controls.Add(this.btnBeenden);
    188. this.Controls.Add(this.btnStart);
    189. this.Controls.Add(this.txtResult);
    190. this.Menu = this.mnuMain;
    191. this.MinimumSize = new System.Drawing.Size(300, 300);
    192. this.Name = "FrmMain";
    193. this.Text = "Form1";
    194. this.ResumeLayout(false);
    195. }
    196. #endregion
    197. /// <summary>
    198. /// The main entry point for the application.
    199. /// </summary>
    200. [STAThread]
    201. static void Main()
    202. {
    203. Application.Run(new FrmMain());
    204. }
    205. }
    206. }
    Alles anzeigen


    mfg Roland
    Bilder
    • csharp_debug_menuitem_click.jpg

      41,06 kB, 600×536, 921 mal angesehen