小小问题里的思想

weichaozu131083 2005-03-18 10:46:15
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;
}
...全文
30 点赞 收藏 2
写回复
2 条回复
syeerzy 2005年04月07日
1.0 谁说C#里没有现成的了?replace干什么用的???楼主你白做了这些事。
回复 点赞
weichaozu131083 2005年03月18日
回复 点赞
发动态
发帖子
.NET技术其他语言
创建于2007-09-28

1539

社区成员

1.2w+

社区内容

.NET技术 其他语言讨论
社区公告
暂无公告