Frage

Visual Studio und SharpDevelop nicht beiden Teilnehmer einrichten Ereignisse in der gleichen Art und Weise zu handhaben. Die Art, wie sie eingerichtet sind, ist ein wenig anders. Dies macht es schwierig VS an einem Ort und #develop in ein anderes zu verwenden (auf dem gleichen Projekt).

Zum Beispiel in VB, Visual Studio tut das folgende:

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    Me.Close()
End Sub

Und ...

Friend WithEvents OK_Button As System.Windows.Forms.Button

Damit die Steuerung erklärt wird, nicht nur mit einem anderen Bereich (dies kann ein Problem sein, auch, aber nicht das Thema dieses Beitrags), aber mit einem Withevent. Der Event-Handler wird dann durch eine Griffe Klausel zugeordnet.

in #develop wird es so gemacht ...

Sub OK_ButtonClick(sender As Object, e As EventArgs)

End Sub

und ...

Private button1 As System.Windows.Forms.Button

Dann wird in der Methode InitializeComponent

AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick

Das nervigste über diese, ist, selbst wenn es eine Weise getan wird, werden die anderen ide wiederholen es, dass doppelte Erklärungen, und natürlich Zeitfehler kompilieren.

Kennt jemand eine Möglichkeit, dies zu umgehen, eine Möglichkeit, die Standard-Handler anpassen? auch wenn es nur eine Möglichkeit ist, dass sie ausgeschaltet werden können, so kann es nur manuell eingegeben werden?

War es hilfreich?

Lösung

nehmen sie die .designer aus und verbinden sie hinter dem Code im Konstruktor manuell nach oben. die .designer von dem Designer der regeneriert wird, was auch immer Werkzeug, das Sie verwenden

Andere Tipps

SharpDevelop ist unter einer LGPL-Lizenz veröffentlicht, so dass Sie immer die Quelle bekommen und nehmen Sie die gewünschten Änderungen vor.

Für die Änderungen, die Sie möchten, können Sie benötigen, um die InsertComponentEvent und CreateEventHandler Methoden in der VBNetDesignerGenerator Klasse zu ändern oder außer Kraft setzen. Es ist in dem FormsDesigner Projekt.

können Sie die Quelle hier .

Während ich nicht derjenige bin, der in der Regel mit Menschen zustimmen würde, die sagen, dass „dieses Projekt ist Open Source, ändern Sie den Code-Basis selbst“, ist dies ein Fall, in dem es könnte eine gültige Antwort sein.

Der Grund, warum #develop Dinge so tut es tut es, weil es ein direkter Anschluss ist, wie C # fügt Event-Handler, zum Beispiel

AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick

ist lediglich eine direkte Übersetzung von:

this.button1.Click += new EventHandler(OK_ButtonClick);

Wenn Sie C # verwendet haben, Visual Studio und #develop wird Ereigniserzeugung in Code genau die gleiche Art und Weise handhaben.

Offensichtlich ist niemand zu der gemeinsamen Visual Basic usecase in #develop besuchen, und wie ich oben sagte, ist dies eine jener Rand Fälle, in denen Sie nur dem Code selbst zu zwicken haben könnten, oder vielleicht sogar auf dem beitragen zurück #develop Quelle für diesen speziellen Fall.

Ich bin sicher, dass alle anderen, die #develop für Visual Basic verwendet würde schätzen.

Das wird nicht der praktischste Vorschlag sein, aber ich verspreche, dass es die Arbeit für Sie erledigen würde.

#develop ist Open Source. Also, theoretisch könnten Sie die Code-Basis auf das gleiche Verhalten wie von Visual Studio.net ändern ... Ich bin nicht sicher, wie beteiligt dies sein könnte, aber ich dachte, dass ich meine Idee teilen würde ...

Als Alternative zur Herstellung der Änderung Ihrer selbst, könnte man das Kernteam um dies als Feature-Request in Verbindung. Vielleicht wäre eine Spende helfen ... Andere auch in dieser Veränderung interessiert sein könnten.

Viele Grüße, Frank V.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top