-5

関数を記述してパラメーターを渡すことに問題があります。

私の問題は、という関数を作成したことmySumです。以下のコードを示しました。

注:ユーザーから値を取得するために2つのテキストボックスを使用しました。関数は、これら2つの値を追加して、に表示する必要があり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
}
4

9 に答える 9

2

関数はinteger引数として期待していますが、文字列を渡しています(Textプロパティは文字列を返します)。だからそれに変換します。

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

変換する前に、null値/有効な数値を確認できます。確認しないと、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);
于 2012-07-16T17:24:59.210 に答える
2

問題は、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.           
 }
于 2012-07-16T17:28:43.637 に答える
2

テキスト ボックスの値を整数に解析します。

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

適切なエラー処理を追加します。

于 2012-07-16T17:26:03.057 に答える
2
private void button1_Click(object sender, EventArgs e)
    {

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

    }
于 2012-07-16T17:26:09.547 に答える
2

単純に次のようにします。

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

コード ビハインド ファイルで、上記の関数を次のように呼び出します。

    MessageBox.Show(mySum(txtbox1.Text,txtbox2.Text)..ToString());
于 2012-07-16T17:26:51.840 に答える
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))

...テキスト ボックスが実際に整数値を保持していない場合、問題が発生することに注意してください。int.TryParse()より堅牢なソリューションを確認できます。

于 2012-07-16T17:29:00.113 に答える
1

s trystringを期待する関数に s を渡していますint

mySum(int.Parse(txtbox1.text),int.Parse(txtbox2.text))
于 2012-07-16T17:25:45.587 に答える
1

Textbox.Textプロパティは文字列を返します。関数宣言では、2 つの整数を渡しています。したがって、文字列を整数に変換する必要があります。

于 2012-07-16T17:25:55.100 に答える
1

C# には String から Int32 への暗黙的な変換がないため、メソッドが int パラメーターを受け取る場合は、渡す前に値を int に変換する必要があります。

于 2012-07-16T17:28:20.423 に答える