0

番号 8,9,A,B (Int64) を生成します。

しかし、私は必要です

00000008

00000009

0000000A

0000000B

000001ED

このコード:

        int count = 1;
        sb = new StringBuilder();
        sb.Append("SELECT max(Numb) FROM tblAs");

        string sql = sb.ToString();
        cmd.CommandText = sql;
        cmd.CommandType = CommandType.Text;
        cmd.Connection = Conn;
        count = (int)cmd.ExecuteScalar();
        int newCount = count;
        int i;


        for (i = 0; i < dataGridView1.Rows.Count; i++)
        {
            if (dataGridView1.Rows.Count > 0)
            {
                newCount = newCount + 1;

                Int64 numTag;
                string cTag = Convert.ToString(newCount);
                numTag = Int64.Parse(cTag);
                cTag = numTag.ToString("X");

                if (cTag.Length < 8)
                {
                    int countchar = 8 - cTag.Length;
                    for (i = 1; i <= countchar; i++)
                    {
                        cTag = "0" + cTag;
                        dataGridView1.Rows[i].Cells[3].Value = cTag;
                    }
                }
            }

エラー行: dataGridView1.Rows[i].Cells[3].Value = cTag; メッセージ:インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

お時間をいただきありがとうございます:)

4

2 に答える 2

5

手間を省いて、.NET Frameworkの組み込み機能を使用します。

// automatically pads the number with up to 8 leading zeros
cTag = numTag.ToString("X8");  
于 2012-09-26T09:40:38.943 に答える
2

ネストされたs には同じ変数iを使用します。 for

for (i = 0; i < dataGridView1.Rows.Count; i++)

for (i = 1; i <= countchar; i++)

これがあなたが得る理由ですIndex was out of range. Must be non-negative and less than the size of the collection

于 2012-09-26T09:38:57.120 に答える