2012-07-16 54 views
-4

我有一個編寫函數並給它傳遞一個參數的問題。C#函數和文本框作爲參數的錯誤

我的問題是我創建了我的函數mySum。我已經展示了下面的代碼。

注意:我使用了兩個文本框來獲取用戶的值,並且函數應該添加這兩個值並將其顯示在MessageBox中。

void mySum(int a, int b) 
{ 
    int ans; 
    ans = a + b; 
    MessageBox.Show(ans.ToString()); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    //Here i want to ass two text boxes values as given below. 
    mySum(txtbox1.text,txtbox2.text); //Here it shows me the error 
} 
+2

您是否讀過錯誤實際上說的?它應該明確爲日光。 – leppie 2012-07-16 17:24:53

+2

將txtbox1.Text轉換爲int,因爲mySum需要int args – DotNetUser 2012-07-16 17:25:35

+0

更好的是,不是僅僅轉換爲int,而是使用System.Int32.TryParse()來確保數據的格式是有效的,並且無效格式的處理是正確的。 – David 2012-07-16 17:30:18

回答

2

你的函數需要integer作爲argument.But您傳遞一個字符串(Text屬性返回字符串)。所以轉換成它。

mySum(Convert.ToInt32(txtbox1.Text),Convert.ToInt32(txtbox2.Text)); 

您可以在轉換之前檢查空值/有效數值,否則ToInt32函數將拋出異常。使用Int32.TryParse

int value1=0; 
int value2=0; 
int result; 

if (!Int32.TryParse(txtbox1.Text, out value1)) 
{ 
    MessageBox.Show("Not valid number"); 
    return; 
} 
if (!Int32.TryParse(txtbox2.Text, out value2)) 
{ 
    MessageBox.Show("Not valid number"); 
    return; 
} 

mySum(value1,value2); 
1

你傳遞string s到預期int個功能嘗試

mySum(int.Parse(txtbox1.text),int.Parse(txtbox2.text)) 
1

Textbox.Text屬性返回字符串。在你的函數聲明中,你傳遞了兩個整數。所以你需要將字符串轉換爲整數。

2

解析文本值整數:

mySum(int.Parse(txtbox1.text),int.Parse(txtbox2.text)); 

添加approriate錯誤處理。

2
private void button1_Click(object sender, EventArgs e) 
    { 

      mySum(Int32.Parse(txtbox1.text), Int32.Parse(txtbox2.text));   

    } 
2

簡單地這樣做:

int mySum(string a, string b) 
    { 
     return Convert.ToInt32(a) + Convert.ToInt32(b); 
    } 

在隱藏文件的代碼,調用上面的函數是這樣的:

MessageBox.Show(mySum(txtbox1.Text,txtbox2.Text)..ToString()); 
+0

對不起,這不會編譯:)複製/粘貼,壞mmkay! (你實際上有2個錯誤) – leppie 2012-07-16 17:28:32

+0

我已經更新了答案....現在,它應該工作... – 2012-07-16 17:30:33

+0

糟糕,實際上沒有看到:)你沒有修復我提到的2個錯誤。 – leppie 2012-07-16 17:32:18

1

C#沒有一個隱含的從字符串轉換到的Int32所以如果你的方法需要一個int參數,你必須在傳入之前將該值轉換爲int。

2

問題是thsat txtBox1.Text不是以int形式存儲的,而是以字符串形式存儲的。您需要安全地使用System.Int32.TryParse至查看文本是否爲字符串並將其轉換爲int。

private void button1_Click(object sender, EventArgs e) 
{ 

    int firstInt = -1; 
    int secondInt = -1; 

    if(!System.Int32.TryParse(txtbox1.Text, out firstInt) 
    { 
     MessageBox.Shw("Invalid value in Textbox 1"); 
     return; // Stop procesing 
    } 
    if(!System.Int32.TryParse(txtbox2.Text, out secondInt) 
    { 
     MessageBox.Show("Invalid value in Textbox 2"); 
     return; // Stop procesing 
    } 
    //Here i want to add the values from two text boxes values as given below. 
    mySum(firstInt, secondInt); //Here it shows me the error . Please help me.   
} 
+1

我不知道這是否作爲結對編程。 – 2012-07-16 17:32:33

+0

一般來說,最好先向新程序員教授簡單的方法,然後在理解基礎知識後詳細闡述最佳實踐。 – 2012-07-16 17:36:23

1

這不是一個好辦法。

我建議這個:

public int mySum(int a, int b) 
{ 
    return a + b; 
} 

,然後在你的事件,執行以下代碼:

var t1 = int.Parse(txtbox1.text); 
var t2 = int.Parse(txtbox2.text); 
MessageBox.Show(mySum(t1,t2)) 

...記住,這會出現問題,如果你的文本框AREN實際上沒有整數值。您可以查看int.TryParse()以獲得更強大的解決方案。

+0

或者您可以使用數據綁定並完成它; p – leppie 2012-07-16 17:30:17

+0

@leppie:呃。我不太瞭解Windows應用程序中的數據綁定(我主要是ASP.NET),但我認爲我更願意將驗證邏輯保留在UI之外。個人喜好。 – 2012-07-16 17:44:45