1.0 曾经听别人说为了不出问题,不能改变循环计数变量的值,可
    我碰到一个问题,要删除字符串里不符合要求的字符
    可惜C#里没有现成的函数,我就自己做一下,可怎么也弄不好,
    我后来就把循环计数变量的值改了,问题就变的好玩了,
    大家认为怎样,有没有更好的方法,代码如下:str保存有字符串;
     for(int i=0;i<str.Length-1;i++){
     string s = str.Substring(i,1);
     if(s != "1" || s != "3"  || s != "7" || s != "8" ||  s != "0"){
          str = str.Remove(i,1);
          i--;
     }
     MessageBox.Show(this,str);
1.1 我用了两个NumericUpDown和一个复选框
    两个NumericUpDown用来设置图片的高和宽,
    复选框用来控制是否按比例调整,
    如果选择了按比例调整,既勾上复选框,那你改变高的值,宽也跟着改变
    同样你改变宽的值,高的值也跟着改变,
    我用了NumericUpDown的ValueChanged事件
    结果设置时两个互相调用,没完没了
    后来我加了个计数变量,我把代码贴出来
    大家有更好的方法告诉我,我非常感谢;
    其实这里还没做完,如果我直接在NumericUpDown输入数字,不是通过那两个按钮
    结果不触发ValueChanged事件,我又重写KeyPress事件,
    结果根本不行,于是又重写KeyUp事件
    我后来发现我设置了最大最小值,用户却可以直接通过键盘输入超过范围的数字,导致错误
    我又重写Keyup事件,可效果总有一点滞后,如我输入16000,先显示16000了数字,再改成最大值1600;
    怎样才能解决这滞后问题呢?
    按理应该可以屏蔽掉系统的按键事件的,就象VC里面的,你重载某个事件, 
    事件里面往往会调用系统消息处理函数,你只要去掉它就可以了
    可C#里面没有
    private void numericUpDown1_ValueChanged(object sender, System.EventArgs e){
if(checkBox1.Checked == true) {              /*按比例调整*/
                round_time++;
if(round_time == 1)
{
ChildForm1 image_form = new ChildForm1();
numericUpDown2.Value  = decimal.ToInt16(numericUpDown1.Value/width*height);
if(image_form!=null)image_form.Dispose();
}
if(round_time == 2)round_time = 0;
}