Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除或添加元素时如何管理计数值_C#_Wpf_Datagrid - Fatal编程技术网

C# 删除或添加元素时如何管理计数值

C# 删除或添加元素时如何管理计数值,c#,wpf,datagrid,C#,Wpf,Datagrid,大家好,我是c#wpf编程新手,我只需要创建一个包含我制作的一些细节的数据网格,一个主要任务是添加序列号时,序列号将增加为1,2,3,4,等等。当我从数据网格中删除一条记录时,序列号将根据它重新排列,例如:sno:1,2,3,4,5,6。 拆除第三排后,其应为1,2,3,4,5,1,2,4,5,6。 同样,对于在1,2,3之间插入行,添加后应为1,2,3,4任务是在2和3之间添加行,新行帮助需要 void mbtninsertstep_Click(object sender, Ro

大家好,我是c#wpf编程新手,我只需要创建一个包含我制作的一些细节的数据网格,一个主要任务是添加序列号时,序列号将增加为1,2,3,4,等等。当我从数据网格中删除一条记录时,序列号将根据它重新排列,例如:sno:1,2,3,4,5,6。 拆除第三排后,其应为1,2,3,4,5,1,2,4,5,6。 同样,对于在1,2,3之间插入行,添加后应为1,2,3,4任务是在2和3之间添加行,新行帮助需要

       void mbtninsertstep_Click(object sender, RoutedEventArgs e) {
     int rowindex = mdatagridedit.Items.IndexOf(mdatagridedit.CurrentCell);
     if (rowindex >= 0) {
        int rowcount = programtable.Rows.Count;
        msteps.Add(new Steps { mStepno = count, mPosition = "0", 
                            mRepeat = "NONE", mCount = "1", mAftercut = "NONE" });
        int p = rowindex + 1;
        for (int i = 0; i < rowcount + 1; i++) {
           programtable.Rows[i][0] = p++;
        } edited = true;
     }
  }
void mbtninsertstep\u单击(对象发送方,路由目标){
int rowindex=mdatagridedit.Items.IndexOf(mdatagridedit.CurrentCell);
如果(行索引>=0){
int rowcount=programtable.Rows.Count;
添加(新步骤{mStepno=count,mPosition=“0”,
mRepeat=“无”,mCount=“1”,mAftercut=“无”});
int p=行索引+1;
对于(int i=0;i
删除按钮代码

插入按钮代码

void mbtndeletestep_Click(object sender, RoutedEventArgs e) 
{
     int deleterow;
     DataGridView dg = new DataGridView();
    // msteps.Remove((Steps)mdatagridedit.SelectedItem);
     int rowindex = dg.CurrentRow.Index;
     if (rowindex >= 0) {
        int rowcount = programtable.Rows.Count;

        int temp = dg.CurrentCell.RowIndex;
        programtable.Rows.RemoveAt(temp);
        int p = temp + 1;
        for (int i = rowindex; i < rowcount - 1; i++) {
           programtable.Rows[i][0] = p++;
        }
        int RowCountAfterDeleting = programtable.Rows.Count;
     }

     //int p = mdatagridedit.Items.Count;
     // if (mdatagridedit.SelectedItem == null) {
     //    System.Windows.Forms.MessageBox.Show("Select an row");
     // } else {
     //msteps.RemoveAt(mdatagridedit.SelectedIndex);
     //int p = mdatagridedit.SelectedIndex + 1;
     //    for(int i = mdatagridedit.SelectedIndex;
                   i < mdatagridedit.Items.Count - 1; i++){
     //       Steps step = new Steps();
     //       step.mStepno = p - 1;
     //    } int p1 = programtable.Rows.Count;
     //}
  }  
void mbtndelete步骤\单击(对象发送方,路由目标)
{
int deleterow;
DataGridView dg=新DataGridView();
//msteps.Remove((步骤)mdatagridedit.SelectedItem);

int rowindex=dg.CurrentRow.Index; 如果(行索引>=0){ int rowcount=programmatable.Rows.Count; int temp=dg.CurrentCell.RowIndex; 可编程行移除(临时); INTP=温度+1; for(inti=rowindex;i
只需计算可用行数即可解决问题。你能指出你在代码中面临的问题吗;抛出空引用异常问题是在删除CurrentRow后变为空,因此在访问其索引时获得空引用。我建议您将程序表绑定到datagrid。因此,删除后,您只需使用programtable.Rows.Count即可。关于绑定的更多信息@pushpraj,请您将您的评论添加到回答中(可能包含更多信息),以便问题作者能够回答?