2012-09-26 78 views
0

我讓生成數8,9,A,B(的Int64)C#Winform如何生成修復字符?

但我需要

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]。價值= CTAG; 消息:指數超出範圍。必須是非負數且小於集合的大小。 參數名:指數

感謝您的時間:)

+0

行索引從零,而不是開始1 –

+2

一般來說,我認爲你應該熟悉調試工具。大多數情況下,「只需進入代碼,觀察變量並比較期望值和實際值即可」。你會驚奇地發現,通過這樣做你能夠很快找到代碼中的所有錯誤。 – SimpleVar

回答

5

保存自己的.NET Framework的一些工作,use the built-in features

// automatically pads the number with up to 8 leading zeros 
cTag = numTag.ToString("X8"); 
+0

+1回答OP的需要,而不是問題。 – SimpleVar

+0

非常感謝。是工作!^_ ^ – nettoon493

2

您可以使用相同的變量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