Pergunta

Visual Studio e SharpDevelop não tanto configurar delegados para eventos punho da mesma forma. A maneira como eles são configurados é um pouco diferente. Isso torna mais difícil de usar VS em um lugar e #Develop em outra (no mesmo projeto).

Por exemplo, em VB, Visual Studio faz o seguinte:

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

E ...

Friend WithEvents OK_Button As System.Windows.Forms.Button

Assim que o controle é declarado, não só com um escopo diferente (este pode ser um problema também, mas não o tema deste post), mas com WithEvents. O manipulador de eventos é então atribuído a ele por uma cláusula alças.

em #Develop, é feito assim ...

Sub OK_ButtonClick(sender As Object, e As EventArgs)

End Sub

e ...

Private button1 As System.Windows.Forms.Button

Em seguida, no método InitializeComponent

AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick

A coisa mais irritante sobre isso, é mesmo que é feito de um jeito, outro ide vai refazer tudo, ter declarações duplicadas, e, claro, os erros de tempo de compilação.

Alguém sabe de uma maneira de contornar isso, alguma maneira de personalizar os manipuladores padrão? mesmo que seja apenas alguma maneira que eles podem ser desligados, para que ele possa apenas ser digitado manualmente?

Foi útil?

Solução

levá-los para fora do .designer e conectá-los manualmente no construtor no trás código. o .designer é regenerado pelo designer de qualquer ferramenta que você usa

Outras dicas

SharpDevelop é liberado sob a licença LGPL, então você sempre pode obter a fonte e faça as alterações desejadas.

Para que as alterações que você quer, você pode precisar alterar ou substituir os métodos InsertComponentEvent e CreateEventHandler na classe VBNetDesignerGenerator. É no projeto FormsDesigner.

Você pode obter a fonte aqui .

Enquanto eu não sou aquele que geralmente concordam com as pessoas que dizem que "este projecto é de código aberto, modificar o código base a si mesmo", este é um caso em que pode ser uma resposta válida.

A razão pela qual #develop é fazer as coisas do jeito que está fazendo isso é porque é uma porta direta de como C # adiciona manipuladores de eventos, por exemplo,

AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick

é apenas uma tradução direta de:

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

Se você estiver usando C #, ambos Visual Studio e #Develop irá lidar com criação de eventos no código exatamente da mesma forma.

Obviamente, ninguém está atendendo ao usecase Visual Basic comum em #Develop, e como eu disse acima, este é um daqueles casos de franja que você só pode ter que ajustar o código mesmo, ou talvez até mesmo contribuir de volta para o fonte #Develop para este caso particular.

Eu tenho certeza que todo mundo que usa #Develop para Visual Basic iria apreciar isso.

Esta não vai ser a sugestão mais prática, mas eu prometo que ele iria fazer o trabalho para você.

#Develop é open source. Então, teoricamente, você pode modificar a base de código para o mesmo comportamento que Visual Studio.net ... Eu não tenho certeza de como envolvido isso pode ser, mas eu pensei que iria partilhar a minha ideia ...

Como uma alternativa para fazer a mudança seu self, você pode entrar em contato com a equipe principal sobre isso como um pedido de recurso. Talvez uma doação ajudaria ... Outros podem também estar interessado neste mudança.

Saudações, Frank V.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top