C#如何手动触发控件的事件? 100

我有两个关联DropDownListA显示省,B显示A省的地区。A的SelectIndexChangeed事件会重新填充B内的地区名称和编码那么我在一个自定义的Page类... 我有两个关联DropDownList A显示省,B显示A省的地区。
A的SelectIndexChangeed事件会重新填充B内的地区名称和编码
那么我在一个自定义的Page类叫做MyPage内有一个函数
public class MyPage: System.Web.UI.Page
{

AssignDq2Ddl(DropDownList A,DropDownList B , string dqcode)
{

// A B都是传染的DropDownList控件,dqcode是一个12位地区编码,前6位表示省
//第一步,根据dqcode.substring(0,6)选择省,A.SelectedValue=dqcode.substring(0,6);
//第二步,根据当前省,重新填充B,等于A的SelectIndexChanged事件处理过程。
//第三步,B.SelectedValue=dqcode;

}
}
public partial class Index:MyPage
{
protected void Page_Load(object sender,EventArgs e)
{
AssignDq2Ddl(ddl1,ddl2,"111111000000");
}
}

因为这是工具函数是写在父类中的,所有不知道第二步A的SelectIndexChanged事件处理函数是什么?只有A.SelectIndexChanged的委托,那么我怎么使用委托来调用A.SelectedChanged的处理函数呢?
父类中没有A和B这两个控件,所以没有办法添加对应的出来函数,而且不同的页面DropDownList的填充内容也不确定,因此需要调用对应的SelectIndexChanged
出来函数。而不能在父类中给定出来函数
展开
 我来答
ahdung
2014-11-22 · TA获得超过609个赞
知道小有建树答主
回答量:323
采纳率:100%
帮助的人:266万
展开全部
A.SelectIndexChanged是个事件,决定了只能在A的内部调用它,即只能在A中这样写SelectIndexChanged(x,x),外部无法调用,外部只能注册或取消注册,即+=/-=,因为事件是天然的private成员,只有事件访问器add_XXX()和remove_XXX()(也就是+=/-=)才是公开的(是否公开由申明事件的访问修饰符决定)。
回到正题,你只能直接调用A.SelectIndexChanged的处理函数。

其实对于你的问题,何不在MyPage中注册A.SelectIndexChanged+=Fun, 然后实现Fun,然后在AssignDq2Ddl中调用Fun呢?也就是我说的直接调用处理函数,而不是调用事件。
阳光的雷咩咩
2014-11-22 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7794万
展开全部

先把父类里两个控件的修饰符改成public或protected(貌似默认不是)。

在子类里:

this.A.SelectIndexChanged += this.F;

子类里还需要定义相应的方法

this.F(ojbect sender, 参数类型 e)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式