本帖最后由 Doshlen 于 2012-08-02 23:42:56 编辑

解决方案 »

  1.   

    呵呵,你的InvCode经过一次替换之后就不再存在X和Y,这样下次InvCode.Replace("X", i.ToString())就不会替换任何数据,            for (int i = 0; i <9; i++)
                {
                    for (int c = 65; c < 71; c++)
                    {
                        StringBuilder InvCode = new StringBuilder(txtInv.Text.Trim());
                        InvCode.Replace("X", i.ToString());
                        InvCode.Replace("Y",Convert.ToChar(c).ToString());
                        ListBox1.Items.Add(InvCode.ToString());
                    }
                    
                }这样就可以解决你的问题,
      

  2.   

    不过即使是这样,也只是在特殊情况下才正确,正确的条件是你的txtInv里只有一个X和一个Y,如果有两个X,应该就不对了,
      

  3.   

    因为你用的是StringBuilder,调用Replace以后就改变了对象本身了,所以第一次循环过后,InvCode的内容就变成"AbAb0Aba"了,不再包含X与Y,之后的循环就不再改变InvCode的内容,最终导致只能得到一个值。可以不使用StringBuilder,直接用String.Replace连续替换:
    ListBox1.Items.Add(InvCode.Replace("X", i.ToString()).Replace("Y",Convert.ToChar(c).ToString()));另外0-9的终止条件应该是i<10或者i<=9
      

  4.   

    补条
    string InvCode = txtInv.Text.Trim();