写了一个给dataGridView控件排序的函数,单击button时在button_Click函数里面调用,排序函数如下:
private void dataGridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
        {
            e.SortResult = System.String.Compare(e.CellValue1.ToString(), e.CellValue2.ToString());
            if (e.SortResult == 0 && e.Column.Name != "编号")
            { 
            e.SortResult=System.String.Compare(dataGridView1.Rows[e.RowIndex1].Cells["编号"].Value.ToString(),dataGridView1.Rows[e.RowIndex2].Cells["编号"].Value.ToString());
            }
            e.Handled=true;
        }
编译时提示无法从“System.EventArgs”转换为“System.Windows.Forms.DataGridViewSortCompareEventArgs”,如果把button_Click函数的EventArgs改成 DataGridViewSortCompareEventArgs又提示“button_Click”的重载均与委托“System.EventHandler”不匹配,该怎么解决?在下初学C#,求高人指教。

解决方案 »

  1.   

    签名不同啊 同学....button  是 void bt_sort(object sender, EventArgs e)
    {}
      

  2.   

     protected void button_Click(object sender, EventArgs e)
    {
    dataGridView.SortCompare();//这个应该就会调用private void dataGridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
    }
      

  3.   

    2楼说的是怎么调用的,直接写的话会提示事件“System.Windows.Forms.DataGridView.SortCompare”只能出现在 += 或 -= 的左边,要是写成dataGridView_SortCompare()参数就不对了。
      

  4.   

    dataGridView1.Sort(dataGridView1.Columns["Column1"], ListSortDirection.Ascending);
    dataGridView1.SortCompare+=new DataGridViewSortCompareEventHandler(dataGridView1_SortCompare);
      

  5.   

    private void dataGridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)和private void button_Click(object sender, EventArgs e)中的e的类型都不一样,所以出错。而上面的说什么在dataGridView_SortCompare里不用DataGridviewSortCompareEventArgs这个参数,是不能解决你的问题的,因为函数里你用了这个参数。
    最好的办法是重新想个其他方法排序,或者想法构造一个Datagridviewsortcompareenvetargs参数