//按钮"加载"的单击事件,向集合中添加数据
private void button1_Click(object sender, System.EventArgs e)
{
arr.Add(new Number("3"));
arr.Add(new Number("2"));
arr.Add(new Number("1"));
arr.Sort();
this.dataGrid1.DataSource=arr;
DataGridTableStyle ts=new DataGridTableStyle();
ts.MappingName="ArrayList";
DataGridTextBoxColumn cs=new DataGridTextBoxColumn();
cs.MappingName="getNumber";
cs.Format="f4";
ts.GridColumnStyles.Add(cs);
this.dataGrid1.TableStyles.Clear();
this.dataGrid1.TableStyles.Add(ts);
}//类
public class Number
{
private string number;
public Number(string num)
{
number=num;
} public string getNumber
{
get
{
return number;
}
set
{
number=value;
}
}
}在执行铵钮的单击事件时出现异常了.
arr.Sort();
this.dataGrid1.DataSource=arr;//在这个地方抛出异常了异常信息为:
未处理的“System.InvalidOperationException”类型的异常出现在 mscorlib.dll 中。其他信息: 指定的 IComparer 引发异常。哪位大哥帮我解决一下.谢谢!

解决方案 »

  1.   

    不好意思,粘漏了一句.
    arr在前面已经声明
    ArrayList arr=new ArrayList();
      

  2.   

    你没声明Number的排序方法,你随便一个自定义类怎么让别人知道它的排序规则是什么,请继承于IComparable接口
      

  3.   

    改改你的Number,不过请你注意你那getNumber是接受的string(PS:楼主是Java开发风格啊,hehe,用属性来做这个) 
    public class Number : IComparable
        {
            private string number;
            public Number(string num)
            {
                number = num;
            }        public string getNumber
            {
                get
                {
                    return number;
                }
                set
                {
                    number = value;
                }
            }        #region IComparable Members        public int CompareTo(object obj)
            {
                Number objNum = obj as Number;
                if (objNum == null) throw new ArgumentException();
                if (objNum.getNumber == this.number) return 0;
                return Convert.ToInt32(objNum.getNumber) > Convert.ToInt32(this.number) ? -1 : 1; 
            }        #endregion
        }
      

  4.   

    楼上正解
    给Number类添加排序方法,否则无法排序
      

  5.   

    arr.Add(new Number("3"));
    arr.Add(new Number("2"));
    arr.Add(new Number("1"));
    //arr.Sort();去掉这一句也可以的,否则就必须用实现IComparable接口
    ...
    ...
      

  6.   

    Number objNum = obj as Number;
                if (objNum == null) throw new ArgumentException();
                if (objNum.getNumber == this.number) return 0;
                return Convert.ToInt32(objNum.getNumber) > Convert.ToInt32(this.number) ? -1 : 1;不好意思.我要比较的是字符串.
    这个地方要怎么修改呢?
    在等级..