checkedchanged事件是rbBasicBHIOnYes.Checked值改变后自动触发的
不是,只设置 rbBasicBHIOnYes.Checked = true; 并不能触发 checkedchanged事件, 我有打断点进去看, 没有调用checkedchanged事件的函数
这是在C# 代码里面设置, 不是在前台页面中选择,
rbBasicBHIOnYes.Checked+=事件 这样应该可以的
我有这样试过,
rbBasicBHIOnYes.Checked = true;
rbBasicBHIOnYes.CheckedChanged += new EventHandler(this.rbBasicBHIOnYes_CheckedChanged)
或者 rbBasicBHIOnYes.CheckedChanged += rbBasicBHIOnYes_CheckedChanged;
但是 我打断点 进去看, 都不没进入进入 rbBasicBHIOnYes_CheckedChanged()函数中,
有没有 不同的用法?
@jason_LSZ: rbBasicBHIOnYes.CheckedChanged += new EventHandler(this.rbBasicBHIOnYes_CheckedChanged) 之后只会添加了 并没有调用 你再调用一下
rbBasicBHIOnYes_CheckedChanged(null,null)
@liyanzhao:
rbBasicBHIOnYes.Checked = true;
rbBasicBHIOnYes.CheckedChanged += new EventHandler(this.rbBasicBHIOnYes_CheckedChanged);
rbBasicBHIOnYes.CheckedChanged(null, null);
我这样使用了下: 出现问题
错误 225 事件“System.Web.UI.WebControls.CheckBox.CheckedChanged”只能出现在 += 或 -= 的左边
这个 CheckedChanged 不能直接调用, 只能出现在 += 或 -= 的左边
在页面初始化时挂接事件委托
rbBasicBHIOnYes.OncheckedChanged+=(s,e)=>{rbBasicBHIOnYes_CheckedChanged();};
这个事件委托怎么用的? 我不是太了解,能详细说下吗
我有试了一下,
出现错误:
错误 225 不能在此范围内声明名为“e”的局部变量,因为这样会使“e”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了
初始位置 , 是指什么位置? 多谢
@jason_LSZ: 那就换个名字咯
(s,ez)=>
@Daniel Cai: 我这样使用,
rbBasicBHIOnYes.Checked = true;
rbBasicBHIOnYes.CheckedChanged += (s, es) => { rbBasicBHIOnYes_CheckedChanged(s,es); };
设置断点, 还是不能 进入 rbBasicBHIOnYes_CheckedChanged()函数, 说明这样还是没有触发这个事件,
@Daniel Cai: 你以前有这样使用过吗? 能不能来个具体例子
@jason_LSZ: 没触发因为你这样挂接晚了,传统的webform中到你这些代码初始化早都结束了。下次页面再post还是重头再来。
挂接事件要在这些event被触发前,如果没记错的话应该是在page load及之前做这些事。
比较奇怪的是,为什么你要这样做?asp.net webform中我记得双击下控件就可以直接愉快的在cs中写对应的事件代码了啊(事件挂接应该是在页面初始化时候就完成了)。
@Daniel Cai: 那是因为, 我在代码中 改变checkbox的值时, 需要 像在页面中点击checkbox时, 使用rbBasicBHIOnYes_CheckedChanged()中代码
这就尴尬了,我想 设置 checkbox 的check值 , 触发rbBasicBHIOnYes_CheckedChanged(), 大神还有没有其他方法?
@jason_LSZ: 那你咋不在默认的changed事件对应的委托方法中加个判断呢?这不就结了么?
@Daniel Cai:实在搞不明白你说的, 求大神帮忙写个简单例子, 多谢
@jason_LSZ:
我对你的问题的理解是当checkbox被点击后会走向不同的分支代码,如果是这样
那么这样实现不就完了么?
void Page_Load(object sender,EventArgs e)
{
xxxCheckBoxInstance.OnCheckedChanged+=(s,ev)={
if(xxxCheckBoxInstance.Checked)
{
//...dosth you like;
}
else
{
//...other logic here;
}
};
}
@Daniel Cai: 不好意思,你可能没理解我的意思, 我是要在 设置xxxCheckBoxInstance.Checked=true,然后调用xxxCheckBoxInstance的 CheckedChanged()事件函数, 不是说 我再写一部分代码, 只是要调用 已经存的 它的CheckedChanged()函数
@jason_LSZ: 你写段伪代码大概描述下你的场景吧。包括如何触发设定checked为true的。
@Daniel Cai:
其实很简单, 我需要在代码中 手动设置 rbBasicBHIOnYes.Checked = true;
在设置 rbBasicBHIOnYes.Checked = true; 之后 调用 rbBasicBHIOnYes.CheckedChanged()函数
比如:
rbBasicBHIOnYes.Checked = true;
触发rbBasicBHIOnYes的CheckedChanged事件 或 说成 调用 rbBasicBHIOnYes的 CheckedChanged()函数