我只是想取出comboBox里面的所有字符串给另一个数组赋值,怎么老出问题呢?
好像没有取出来啊?:(。
public class ConnectionString 
{
public string []Stringx =  null;
public ConnectionString(ComboBox com)
{
if(com.Items.Count == 0)
{
return;
}
Stringx = new string[com.Items.Count];
for(int i=0;i<com.Items.Count;i++)
{
Stringx[i] = com.Items[i].ToString();
}
MessageBox.Show("h");
}
}

有什么问题么?:(

解决方案 »

  1.   

    Stringx = new string[com.Items.Count];
    好象比原来的COMBOX多一个??应该是COUNT-1.
    看看是不是这个造成的问题
      

  2.   

    我对这个类进行了对象序列化: [Serializable]
    public class ConnectionString 
    {
    public string []Stringx =  null;
    public ConnectionString(ComboBox com)
    {
    if(com.Items.Count == 0)
    {
    return;
    }
    Stringx = new string[com.Items.Count-1];
    for(int i=0;i<com.Items.Count-1;i++)
    {
    Stringx[i] = com.Items[i+1].ToString();
    }
    }
    }private void  SaveConnectionString()
    {
    ConnectionString obj = new ConnectionString(this.comboBox1);
    Stream stream = new FileStream("C:\\MyFile1.bin", FileMode.Append, FileAccess.Write, FileShare.None);
    IFormatter formatter = new BinaryFormatter();
    formatter.Serialize(stream, obj);
    stream.Close();
    } private void LoadConnectionString()
    {
    IFormatter formatter3 = new BinaryFormatter();
    Stream stream3 = new FileStream("C:\\MyFile1.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
    ConnectionString obj3 = (ConnectionString) formatter3.Deserialize(stream3);
    this.comboBox1.Items.AddRange(obj3.Stringx);
    stream3.Close();
    }但是存完后(没有问题),可是取的时候,就告诉我错误是:参数不能为空:Item参数。:(什么意思?
      

  3.   

    修改你的ConnectionString的定义
    [Serializable]
    public class ConnectionString
    {
    public string []Stringx = null;
    public ConnectionString()// add a default constructor
    {
    }
    public ConnectionString(ComboBox com)
    {
    if(com.Items.Count == 0)
    {
    return;
    }
    Stringx = new string[com.Items.Count-1];
    for(int i=0;i<com.Items.Count-1;i++)
    {
    Stringx[i] = com.Items[i+1].ToString();
    }
    }
    }
      

  4.   


    楼主没有说出问题所在,只看代码,还真的看不出什么问题反而我对 Knight94(愚翁) 的这段代码非常费解
      

  5.   

    Stringx = new string[com.Items.Count];
    多一个????
    更加费解
      

  6.   

    我的问题是在程序中比如某个按钮事件里面调用save和load之后,会产生错误,我用try catch抓了一下,错误的说明是:就是前面那串字符:参数为空:Item参数。意思大概是说我的combox的item参数是空的吧。
    为什么会出这个问题?
    至于count-1还是count这个倒不是关键问题。我-1是因为comboBox的第一个字符串我留作他用了。
    多一个无参构造函数无所谓的。各位可以自己在form上拉一个combox和一个button,之后把上面那些填冲。看看。;)
      

  7.   

    因为你序列化的时候,
    构造函数的参数是Combobox对象,你再反序列化的时候,并不能生成Combobox对象作为ConnectionString构造函数的参数,因此会出现上面的问题。
      

  8.   

    我自己写了一个例子,没发现你所说的问题。
    估计是combobox作为参数的问题,能否把构造函数的参数类型换一种方式,其实你传进去的不就是combobox中的选项值,转化成一位数组作为参数。
      

  9.   

    是啊,我用comboBox.Items。可是,如果具体到Item就好了,可是我没有发现这样的属性。