我有一个DropDownList,我设置了SelectedIndexChanged事件:
move.SelectedIndexChanged += Move;
public void Move(object sender, EventArgs e)
{
}
我想创建一个派生自EventArgs的类,它是传递给Move方法的参数“e”。
public void Move(object sender, EventArgs e)
{
MyEventArgs my_e = (MyEventArgs)e;
int Id = my_e.ID;
position = my_e.position;
etc;
}
这可能吗? 如果是,我可以给出我可以在事件中使用的这个类属性:
我需要这样做,因为我想将更多信息传递给Move方法而不是DropDownList当前包含的信息。我可以将这些信息放在DropDownList的ID中,但这很难看,需要杂乱的字符串解析。
例如
ID = "Id_4_position_2"
注意:根据Developer Art的要求
我正在列表中移动元素。我需要知道旧订单和新订单。我可以通过使用DropDownList ID来存储旧订单和SelectedValue来存储新订单。实际上,我拥有所有我需要的东西,但在ID中下订单似乎不太优雅。我也想避免自定义事件,似乎工作太多了。
答案 0 :(得分:1)
那是不可能的。
您无法将父类强制转换为子类。
你的意思是这样的:
public class MyEventArgs : EventArgs
{
}
然后你有EventArgs e
并希望将其类型化为MyEventArgs。那不行。
子类扩展父类,这意味着它有更多的肉。父类是 narrower 。没有明智的方法以某种方式自动扩展父类对象成为子类对象。
如果您继承UI控件并为其添加自定义属性,该怎么办?
public class PositionDropDownList : DropDownList
{
public int Id { get; set; }
public int Position { get; set; }
}
在为表单生成控件时设置这些值。然后你可以在你的活动中找到他们:
public void Move(object sender, EventArgs e)
{
PositionDropDownList ddl = (PositionDropDownList)sender;
int Id = ddl.Id;
position = ddl.Position;
}
这样的事情对你有用吗?