2010-07-14 10 views
0

문제 해결에 어려움이 있습니다. 나는 너희들 한테 몇 가지 의견을 듣고 싶다. 이제 내 문제는 라인에 제공 TextBox 이벤트 작은 문제 - C#

private void TextChangeUpdate(object sender, EventArgs e) 
    { 
     if (this.Text.Trim() != "") 
     { 
      txtAmountPaid1.Text = (Convert.ToInt32(txtQuantity1.Text) * Convert.ToDecimal(txtUnitPrice1.Text)).ToString(); 
      txtAmountPaid2.Text = (Convert.ToInt32(txtQuantity2.Text) * Convert.ToDecimal(txtUnitPrice2.Text)).ToString(); 
      txtAmountPaid3.Text = (Convert.ToInt32(txtQuantity3.Text) * Convert.ToDecimal(txtUnitPrice3.Text)).ToString(); 
      txtSubtotalProducts.Text = (Convert.ToDecimal(txtAmountPaid1.Text) + Convert.ToDecimal(txtAmountPaid2.Text) + Convert.ToDecimal(txtAmountPaid3.Text)).ToString(); 

      txtSubtotalExpenses.Text = (Convert.ToDecimal(txtWaterBill.Text) + Convert.ToDecimal(txtElectricBill.Text) + Convert.ToDecimal(txtOfficeRent.Text) + Convert.ToDecimal(txtMiscellaneous.Text)).ToString(); 

      txtProductExpenses.Text = txtSubtotalProducts.Text; 
      txtOtherExpenses.Text = txtSubtotalExpenses.Text; 
      txtTotalExpenses.Text = (Convert.ToDecimal(txtProductExpenses.Text) + Convert.ToDecimal(txtOtherExpenses.Text)).ToString(); 
     } 
    } 

:

if (this.Text.Trim() != "") 

내가하는 텍스트 상자 것은 현재이 이벤트를 (사용 검사 할 필요가 나는 아래 모두 같은 TextChange 이벤트를 사용 어쩌면 8 텍스트 상자처럼이 TextChangeUpdate). 이는 값이 ""와 같은지 확인해야하기 때문입니다. 그러나 'this'키워드는 그 일을하지 않는 것 같습니다.

아무도 도와주세요? :) 감사.

답변

0

당신은이 있어야합니다

if (((TextBox)sender).Text.Trim()... 

대신 :

if (this.Text.Trim() 

당신해야 아마도 텍스트 = 널 FO 시험.

var tb = sender as TextBox; 
if (tb.Text != null && tb.Text.Trim()... 
0

sender as TextBox을 사용하고 텍스트를 가져옵니다.

예 :

if ((sender as TextBox).Text.Trim() != "") 
{ 

//code 

} 
0

은 "이"당신이있는 형태를 말한다, "보낸 사람"그것이 있어야로 제어 당신은 처리기에 보낸 사람 PARAM을 확인할 수 있습니다 이벤트

2

을 발사 것입니다 해고 할 TextChange 이벤트를 시작한 TextBox 그냥 TextBox로 캐스팅 한 다음 개체 속성을 검사하십시오.

0

정확하게 정확히 sender 개체입니다. 이것은 이벤트 소스에 대한 참조입니다. 귀하가 원하면, 송신자 객체의 속성을 일단 TextBox으로 적절히 형변환하면 원하는 것을 검사 할 수 있습니다.

2

this이 아마도 사용자의 양식 일 수 있습니다. 당신은 sender를 사용할 필요하지만 먼저 그렇게 TextBox에 캐스팅해야합니다

(sender as TextBox).Text.Trim != "" 
0

사용 보낸 사람

((TextBox)sender).Text.Length != 0 
+0

참고 :! Text.Length = 0 = ""문자열 텍스트를 통해 더 나은 성능을 제공 비교할 것 정수 비교입니다. – Stephen

0

그래, 당신은 필요가 없습니다 제외 클링가

((Textbox)sender).Text.Trim() 

을 말 null을 테스트하기 위해, null로 설정하더라도 검색시 string.empty가 반환됩니다.

[그 (텍스트 상자로 보낸)를 참고 VB.net 형식입니다]