1.前几天写一自定义排序(自定义自动排序),0001-9999,关键就是0009到0010,常规方法就是不足的补零,也就是说一位数前补3个零,二位数前补2个零,三位数前补1个零..看到朋友的一个算法,先不管3721补足3个零再说,然后从右开始截取4位。代码如下:
    public static int auto_num(string str1,string str2)
    {
      string strsel="select count(*) from auto_num";
      string str;
      if(IsExecSqlVal(strsel))
      {
        strsel="select num_id from auto_num order by num_id desc";
        int i=int.Parse(ExecSqlVal(strsel).ToString());
        i++;
        str="000"+i.ToString();
        str=str.Substring(str.Length-4);
      }
      else
      {
        str="0001";
      }
      string strins="insert into auto_num values('"+ str +"','"+ str1 +"','"+ str2 +"')";
      return ExecSql(strins);
    }
    }
2.昨天关于ListBox的问题,如何复选删除?常规方法遍历删除,问题出来了,删除后索引发生变化,这是要逆向遍历,代码如下:
    private void Button6_Click(object sender, System.EventArgs e)
    {
      if(lst5.selectedIndex != -1)
      {
        for(int i=lst5.Items.Count-1;i>=0;i--)
          if(lst5.Items[i].selected)
          {
            bool val = true;
            foreach(ListItem lstitm in lst6.Items)
            {
              if(lst5.Items[i].Text.ToString() == lstitm.Text.ToString())
              {
                val=false;
                break;
              }
            }
            if(val)
            {
              lst6.Items.Add(lst5.Items[i]);
              lst5.Items.Remove(lst5.Items[i]);    
            }
          }        lst5.selectedIndex = -1;
        lst6.selectedIndex = -1;
      }
    } 多谢 "NET?摸到一点门槛"跟"兰花开香入梦境,独思佳人亦飘然"两位的指点

解决方案 »

  1.   

    程序2里面实现功能是把左边ListBox复选值传到右边,右边的ListBox增加,而左边的减少。
    两个ListBox均为复选值。
      

  2.   

    说的对.其实正逆都是相对的,说实了,我们做事通常按常规方法做,这就是人们所认为的习惯,但是习惯也是相对的,如果经验多了,常规也就跟着变了,例如下次如果遇到相同的方法,自然能很快解决了。少走了许多弯路。想想昨天解决第2个问题时,竟然把左边选中的值放到一个ArrayList里面,在遍历完了,在删除,但是一直 没有想到遍历的顺序问题,还是一位CSDN上的朋友提醒下,恍然大悟。也难怪自己开发经验不足,还有待慢慢学习..