110,580
社区成员
发帖
与我相关
我的任务
分享
private void numUpDownAge_ValueChanged(object sender, EventArgs e) {
numUpDownAge.Value = (numUpDownAge.Value + 150) % 150 + 1;
}
//但是每次运行的时候,都是 StackOverflow...内存溢出
private void numUpDownAge_ValueChanged(object sender, EventArgs e) {
if(numUpDownAge.Value == 0)
numUpDownAge.Value = 1;
else
numUpDownAge.Value = (numUpDownAge.Value + 150) % 150;
}
想是可以,但是这貌似又触发 Value_Changed事件.
行不通...像 14楼说的,貌似 也可以...但是在后面加 0 又行不通....
numUpDownAge.Value = (numUpDownAge.Value + 150) % 150 + 1;
的时候不行,这样的区间是[0,149],我不想要0.
但是,加一之后又变成 step 是 2...哎...
如果像你说的, numUpDownAge.Value = (numUpDownAge.Value + 150) % 150;这样的话,
不用在Value_Changed事件中写...直接在 Click事件就可以了...
private void numUpDownAge_Click(object sender, EventArgs e) {
numUpDownAge.Value = (numUpDownAge.Value + 150) % 150;
}
//赋值后会有事件引发的标记
if(_revising)
{
_revising = false; //重置事件处理标记
}
//第一次(用户)触发走你的处理
else
{
numUpDownAge.Value = (numUpDownAge.Value + 150) % 150;
_revising = true;
}
private void numUpDownAge_ValueChanged(object sender, EventArgs e) {
numUpDownAge.ValueChanged-=new EventHandler(numUpDownAge_ValueChanged);
numUpDownAge.Value = (numUpDownAge.Value + 150) % 150 + 1;
numUpDownAge.ValueChanged+=new EventHandler(numUpDownAge_ValueChanged);
}
知道为啥么。。。给高分就跟你说原因。