2013-11-15 2 views
0

저는 초보자입니다. 그러니 나와 함께하시기 바랍니다.C# 매개 변수 전달

이것은 모두 C#입니다.

클래스에서

"MainWindow를"나는 다음과 같은 코드가 있습니다 클래스에서

private void textBox_Enter(object sender, EventArgs e) 
{ 
    view.passwordInputEnter(/**/); 
} 

을 "보기"나는 다음과 같은 코드가 있습니다 :

public void passwordInputEnter(object sender) 
{ 
    if (/**/ == "Passwort") 
    { 
     /**/ = string.Empty; 
     /**/ = '*'; 
    } 
} 

는 내가 뭘하려고이다 : "MainWindow"클래스에는 "view"와는 다른 메소드를 모두 호출하는 여러 메소드가있었습니다. 모두 똑같은 일을했습니다. 나는 그것들이 모두 같은 방법을 부르며 쉽게 추가하거나 제거 할 수 있도록 그것을 바꾸고 싶다. 이를 위해서는 이벤트를 시작한 객체의 다양한 매개 변수를 식별하고 액세스해야합니다. 그러나, 나는 내가 passwordInputEnter에 textBox_Enter에 의해 수신

object sender 

()를 보낼 수있는 방법을 알아낼 수 없었다. 그 방법에서는 "sender.Text"와 같은 함수를 호출하고 싶습니다.

나는 심각하게

가 어떤 조언을 크게 감상 할 수 방법을 좀 더 이해할 수있는 단어 ... 몰라!

+0

달성하고자하는 모델 뷰 발표자입니까? –

답변

2

당신의 방법의 모든 호출자가 텍스트 상자를하다 잘 경우

변화 그것을

public void passwordInputEnter(TextBox textBox) 
{ 
    if (textBox.Text == "Passwort") 
    { 
     xxx= string.Empty; 
     /**/ = '*'; 
     } 
} 

에 편집

private void textBox_Enter(object sender, EventArgs e) 
{ 
    view.passwordInputEnter((TextBox)sender); 
} 

그것을 호출하지만 쉬울 것 모든 텍스트 상자에 대해 동일한 이벤트를 공유하기 만하면됩니다. 이 경우 ...

+0

** 편집 **은 좋은 지적입니다. 감사합니다! – curzic

0

정확하게 질문하는 것을 이해하면 passwordInputEnter 메서드에 매개 변수를 전달하는 방법을 묻는 중입니다. 같이 보낸 사람을 통과 :이 작업을 수행하는

private void textBox_Enter(object sender, EventArgs e) 
{ 
    view.passwordInputEnter(sender); 
} 

public void passwordInputEnter(object sender) 
{ 
    if (sender is TextBox) 
    { 
     TextBox textBox = (TextBox)sender; 
     if (textBox.Text == "Passwort") 
     { 
      /**/ = string.Empty; 
      /**/ = '*'; 
     } 
    } 
} 
1

일반적인 방법 (나는 그것이 일반적으로 좋은 방법이 아니라고해야하지만 것은) : 다음과 같이

var textBoxSender = sender as TextBox; 

if (textBoxSender != null) 
{ 
    textBoxSender.Text = "Changed value"; 
} 
+0

더 나은 방법이 무엇인가요? –

+0

동일한 이벤트 핸들러에서 서로 다른 유형의 객체를 처리하지 않는 한 나쁜 습관은 아닙니다. 즉, TextBox인지 여부를 항상 확인합니다. 이벤트 핸들러는 텍스트 상자에 대한 작업 만 처리합니다. 다른 객체 (일반적으로 말하면)에 대한 이벤트 핸들러를 다시 사용하지 마십시오. –

0

은 보낸 사람 캐스트 : var에 텍스트 상자를 = TextBox로 보낸 사람

null인지 확인한 다음 Text 속성을 설정하지 않은 경우 textBox.Text = "변경된 값";