0

listview特定の列の合計を計算できないという問題があります。

私のプロジェクトでは、Excelファイルから少しの情報を読み取り、ListViewいくつかの操作を実行してこの情報を処理しています。

情報を読み取っているときListView、特定の列の合計を計算できません。関数は次のとおりです。

private void button12_Click(object sender, EventArgs e)
{

    int iSum = 0;
    foreach (ListViewItem o in this.lsvMain.Items )
    {
        iSum = iSum + Convert.ToInt16(o.SubItems[8].Text);
        textBox1.Text = iSum.ToString();
    }

次のエラー メッセージが表示されます: FormatException が処理されませんでした (入力文字列が正しい形式ではありませんでした)。(iSum..) 行に表示されます。

すべての情報が整数である文字列はありません!

4

3 に答える 3

0

ではない に何かをParse(または)しようとすると、そのエラーが発生します。ConvertIntegerInteger

例えば

var anIntegerValue = Convert.ToInt16("a");

例外が発生します。

FormatException: 入力文字列が正しい形式ではありませんでした。

デバッガーをプログラムに接続し、リストボックスから値として取得しているものを確認します。それはあなたを驚かせるでしょう:)。

ダニエルから提案された例でも同じ問題が発生します。int.Parse()or Int32.Parseor Convert.Int16orConvert.Int32はすべて同じ例外になります。

于 2013-02-03T21:52:14.120 に答える
0
private void button12_Click(object sender, EventArgs e)
{
    int sum = 0;

    foreach (ListViewItem o in lsvMain.Items)
    {
        int value;
        if (int.TryParse(o.SubItems[8].Text, out value))
            sum += value;
    }

    textBox1.Text = sum.ToString();
}
于 2013-02-03T21:43:46.090 に答える
0

次のいずれかの問題を抱えていると思います。

int aNumber = Convert.ToInt16("15.6"); //throws format exception because of decimal value
int anotherNumber = Convert.ToInt16(""); //throws format exception because there is nothing to convert
int yetAnotherNumber = Convert.ToInt16("-23.00"); //throws format exception because of .00

私はあなたがExcelファイルで数字を読んでいて、その文字列表現を維持していると推測しています。

列が数値としてフォーマットされている場合、すべての数値が「X.00」または同様の形式で表されていると推測しているため、FormatExceptionが発生します

于 2013-02-03T22:34:18.310 に答える