3

私はこのエラーを修正するものを見つけることができません:/私は2文字の組み合わせ(例.aa、ba、cb)を乗数(aa*3=4*3 ba*2=3,5*2)にしようとしています。私のコードは;

string[] dersler = new string[9];
    double[] kredi = new double[9];
    double[] krediSonuclari = new double[9];

    double derscarp(double s1, double s2)
    {
        return s1 * s2;
    }
    private void button1_Click(object sender, EventArgs e)
    {

        int i=0;
        int j = 0;
        foreach (TextBox item in Controls)
        {
            if (item.Name.Substring(0,7)=="txtders")
            {
                dersler[i] = Convert.ToString(item.Text);
                i++;
            }
        }
        foreach (TextBox item in Controls)
        {
            if (item.Name.Substring(0, 8) == "txtkredi")
            {
                kredi[j] = Convert.ToDouble(item.Text);
                j++;
            }
        }

        double toplam =0;
        for (int k = 0; k < 9; k++)
        {
4

3 に答える 3

3

これを行う場合:

foreach (TextBox item in Controls)
{
    if (item.Name.Substring(0,7)=="txtders")
    {
        dersler[i] = Convert.ToString(item.Text);
        i++;
    }
}

フォーム内のすべてのコントロールがテキスト ボックスであると仮定しますが、これはおそらく正しくありません。そのため、Label コントロールを TextBox としてキャストしようとし、失敗してエラーをスローします。

代わりにこれを試してください:

foreach (Control ctrl in Controls)
{
    TextBox item = ctrl as TextBox;
    if (item != null) 
    {
        if (item.Name.Substring(0,7)=="txtders")
        {
            dersler[i] = Convert.ToString(item.Text);
            i++;
        }
    }
}
于 2013-05-13T14:32:07.893 に答える
2

交換

foreach (TextBox item in Controls) //implicit cast.

}

 foreach (Control ctrl in Controls)
     if (ctrl is TextBox){
         TextBox tb = (Textbox)ctrl; //explicit cast
     }
 }

foreach は、コントロール コレクションの cherr... ehm... Textboxes を自動的に選択しません。そのため、コレクション内のすべての CONTROL について、それは TextBox ではなく、暗黙のキャストは失敗します。

于 2013-05-13T14:32:10.570 に答える