2012-12-18 2 views
3

이러한 인수를 이해하는 데 어려움을 겪고 있습니다.
그들은 자동 생성되므로 생각을 많이 줄 필요는 없지만 양식의 다른 부분에서 이러한 이벤트 중 하나를 호출하려면이 인수에 값을 제공해야합니다. 아직도 그들이 의미하는 것이 확실하지 않습니다. 여기 "sender"및 "e"이벤트 인수는 무엇입니까

이벤트 내가 Call 싶습니다되어

Private Sub stringTextBox_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles stringTextBox.KeyDown 
    If e.KeyCode = Keys.Enter Then 
     Call stringButton_Click(Me, Me) '<<(Me,Me) is my incorrect attempt 
    End If 
End Sub 

내가 무엇을 사용해야 인수 및 이유 :

여기
Private Sub stringButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stringButton.Click 
    Dim outString As String 
    Select Case stringTextBox.Text 
     Case "" 
      outString = "You entered an empty string" 
     Case "10" 
      outString = "10" 
     Case Else 
      outString = "Your string is not covered by the cases" 
    End Select 
    strResultTextBox.Text = outString 
End Sub 

가 호출하는 방법?

+1

http://stackoverflow.com/questions/1303145/net-ev ents-what-are-object-sender-eventargs-e이 질문은 도움이 될 것입니다. – Abaco

+1

'Call' 문 btw가 필요 없습니다. – sloth

+0

'VBA'에서 나는 일반적으로 일을 좀 더 가독하게 만들기 위해'Call'을 포함합니다. – whytheq

답변

6

에 변경 될 수 있습니다! 이것은 매우 조잡한 코딩입니다. 예를 들어

Private Function String GetResponseMessage(ByVal input as String) 
    Select Case input 
     Case "" 
      Return "You entered an empty string" 
     Case "10" 
      Return "10" 
     Case Else 
      Return "Your string is not covered by the cases" 
    End Select 
End Function 

Private Sub stringButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stringButton.Click 
    Dim outString As String=GetResponseMessage(stringTextBox.Text) 
    strResultTextBox.Text = outString 
End Sub 

보낸 사람 인수는 및 전자, 당신이 필요로하는 매개 변수를 사용하여 필요한 작업이 별도의 방법을 만들고, 이벤트 처리기 및 양식의 다른 부분에서 모두 전화 이벤트 핸들러의 표준 서명. 보낸 사람이 이벤트를 제기 한 개체이고 e에 이벤트 데이터가 들어 있습니다. .NET의 모든 이벤트에는 이러한 인수가 포함됩니다.

EventArgs은 모든 이벤트 인수의 기본 클래스이며 이벤트에 대해 많이 말하지 않습니다. 여러 이벤트는 파생 클래스를 사용하여 더 많은 데이터를 제공합니다 (예 : KeyPress 이벤트는 KeyChar 속성에서 누른 실제 키가 들어있는 KeyEventArgs 클래스를 사용합니다.

이 기본 .NET 프로그래밍 물건이며 새로운 방법을 만들어

+0

감사합니다. 별도의 개인적인 방법이 필요할지도 모른다는 느낌이 들었습니다. 그래도 내 코드의 다른 곳에서 이벤트 처리기를 호출해야하거나 나중에 100 % 회피 할 수 있습니까? – whytheq

+0

... 저는 다음 학년도 학부 자격 취득을 위해'VB.NET'을 공부하고 있습니다. 따라서이 질문 (미래의 많은 것들)이 있습니다. 도와 주셔서 감사합니다. – whytheq

3

보낸 사람은 이벤트를 생성 한 개체를 지정하는 데 사용되며, e는 이벤트 데이터 자체입니다. 예를 들어, 일반적으로 "보낸 사람"양식의 단추를 클릭하면 단추가되고 e는 마우스 이벤트가됩니다. 당신이 경우

당신은 단순히 코드의 다른 부분에서 이벤트 핸들러를 호출하지 마십시오

Call stringButton_Click(Me, Me) 

Call stringButton_Click(Nothing, EventArgs.Empty) 
1

당신은이 작업을 수행 할 수 있습니다 대신 자동 생성 된 코드를 신뢰의 시간이 이해 .NET 이벤트와 윈도우 폼을 지출해야한다. 이벤트 처리기를 호출하지 마십시오.

Public sub abcd() 
Dim outString As String 
Select Case stringTextBox.Text 
    Case "" 
     outString = "You entered an empty string" 
    Case "10" 
     outString = "10" 
    Case Else 
     outString = "Your string is not covered by the cases" 
End Select 
strResultTextBox.Text = outString 
end sub 

전화는

Private Sub stringButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stringButton.Click 
abcd() 
End Sub 

원하는 위치에서이를 이미 위에서 말한 바와 같이, 별도의 함수로 코드를 이동하는 것이 좋습니다,하지만 여기에있어이

Private Sub stringTextBox_KeyDown(ByVal sender As System.Object, ByVal e As 
System.Windows.Forms.KeyEventArgs) Handles stringTextBox.KeyDown 
If e.KeyCode = Keys.Enter Then 
    abcd() 
End If 
End Sub 
1

에서이 방법 해결 방법 : call stringButton_Click(Nothing,Nothing)

관련 문제