Hallo!
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.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace EventMethods
{
public class FrmMain : System.Windows.Forms.Form
{
private System.ComponentModel.Container components = null;
private System.Windows.Forms.MenuItem mnuDatei;
private System.Windows.Forms.MenuItem mnuHilfe;
private System.Windows.Forms.MenuItem mnuOeffnen;
private System.Windows.Forms.MenuItem mnuSpeichern;
private System.Windows.Forms.MenuItem mnuSpeicherUnter;
private System.Windows.Forms.MainMenu mnuMain;
private System.Windows.Forms.MenuItem mnuSeparator;
private System.Windows.Forms.MenuItem mnuUeber;
private System.Windows.Forms.TextBox txtResult;
private System.Windows.Forms.Button btnStart;
private System.Windows.Forms.Button btnBeenden;
private System.Windows.Forms.MenuItem mnuBeenden;
public FrmMain()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void mnuBeenden_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Beenden");
}
private void mnuSpeicherUnter_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Speichern unter");
}
private void mnuSpeichern_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Speichern");
}
private void mnuOeffnen_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Öffnen");
}
private void mnuUeber_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Über");
}
private void btnStart_Click(object sender, System.EventArgs e)
{
// TODO.
}
private void btnBeenden_Click(object sender, System.EventArgs e)
{
this.Close();
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.mnuMain = new System.Windows.Forms.MainMenu();
this.mnuDatei = new System.Windows.Forms.MenuItem();
this.mnuHilfe = new System.Windows.Forms.MenuItem();
this.mnuOeffnen = new System.Windows.Forms.MenuItem();
this.mnuSpeichern = new System.Windows.Forms.MenuItem();
this.mnuSpeicherUnter = new System.Windows.Forms.MenuItem();
this.mnuSeparator = new System.Windows.Forms.MenuItem();
this.mnuBeenden = new System.Windows.Forms.MenuItem();
this.mnuUeber = new System.Windows.Forms.MenuItem();
this.txtResult = new System.Windows.Forms.TextBox();
this.btnStart = new System.Windows.Forms.Button();
this.btnBeenden = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// mnuMain
//
this.mnuMain.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuDatei,
this.mnuHilfe});
//
// mnuDatei
//
this.mnuDatei.Index = 0;
this.mnuDatei.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuOeffnen,
this.mnuSpeichern,
this.mnuSpeicherUnter,
this.mnuSeparator,
this.mnuBeenden});
this.mnuDatei.Text = "Datei";
//
// mnuHilfe
//
this.mnuHilfe.Index = 1;
this.mnuHilfe.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuUeber});
this.mnuHilfe.Text = "Hilfe";
//
// mnuOeffnen
//
this.mnuOeffnen.Index = 0;
this.mnuOeffnen.Text = "Öffnen";
this.mnuOeffnen.Click += new System.EventHandler(this.mnuOeffnen_Click);
//
// mnuSpeichern
//
this.mnuSpeichern.Index = 1;
this.mnuSpeichern.Text = "Speichern";
this.mnuSpeichern.Click += new
System.EventHandler(this.mnuSpeichern_Click);
//
// mnuSpeicherUnter
//
this.mnuSpeicherUnter.Index = 2;
this.mnuSpeicherUnter.Text = "Speichern unter...";
this.mnuSpeicherUnter.Click += new
System.EventHandler(this.mnuSpeicherUnter_Click);
//
// mnuSeparator
//
this.mnuSeparator.Index = 3;
this.mnuSeparator.Text = "-";
//
// mnuBeenden
//
this.mnuBeenden.Index = 4;
this.mnuBeenden.Text = "Beenden";
this.mnuBeenden.Click += new System.EventHandler(this.mnuBeenden_Click);
//
// mnuUeber
//
this.mnuUeber.Index = 0;
this.mnuUeber.Text = "Über";
this.mnuUeber.Click += new System.EventHandler(this.mnuUeber_Click);
//
// txtResult
//
this.txtResult.Anchor =
((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top
| System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtResult.Location = new System.Drawing.Point(8, 8);
this.txtResult.Multiline = true;
this.txtResult.Name = "txtResult";
this.txtResult.Size = new System.Drawing.Size(276, 203);
this.txtResult.TabIndex = 0;
this.txtResult.Text = "";
//
// btnStart
//
this.btnStart.Anchor =
((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom
| System.Windows.Forms.AnchorStyles.Left)));
this.btnStart.Location = new System.Drawing.Point(8, 219);
this.btnStart.Name = "btnStart";
this.btnStart.TabIndex = 1;
this.btnStart.Text = "Start";
this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
//
// btnBeenden
//
this.btnBeenden.Anchor =
((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom
| System.Windows.Forms.AnchorStyles.Right)));
this.btnBeenden.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnBeenden.Location = new System.Drawing.Point(212, 219);
this.btnBeenden.Name = "btnBeenden";
this.btnBeenden.TabIndex = 2;
this.btnBeenden.Text = "Beenden";
this.btnBeenden.Click += new System.EventHandler(this.btnBeenden_Click);
//
// FrmMain
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.btnBeenden;
this.ClientSize = new System.Drawing.Size(292, 251);
this.Controls.Add(this.btnBeenden);
this.Controls.Add(this.btnStart);
this.Controls.Add(this.txtResult);
this.Menu = this.mnuMain;
this.MinimumSize = new System.Drawing.Size(300, 300);
this.Name = "FrmMain";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new FrmMain());
}
}
}
mfg Roland