C# 如何在C中为同一方法设置两种类型的变量#
我有一个带有两个事件的C# 如何在C中为同一方法设置两种类型的变量#,c#,methods,arguments,C#,Methods,Arguments,我有一个带有两个事件的列表视图, 1 listView1_MouseClick(object sender, MouseEventArgs e) 2 listView1_KeyDown(object sender, KeyEventArgs e) 我需要为这两个事件创建一个方法,但问题是每个事件都有不同的返回类型。我创建了一个方法getListViewSelected(e) 但是如果listView1\u MouseClick(objectsender,MouseEventArgs e)参数
列表视图
,
1 listView1_MouseClick(object sender, MouseEventArgs e)
2 listView1_KeyDown(object sender, KeyEventArgs e)
我需要为这两个事件创建一个方法,但问题是每个事件都有不同的返回类型。我创建了一个方法getListViewSelected(e)
但是如果
listView1\u MouseClick(objectsender,MouseEventArgs e)
参数无效。有办法吗 制作3种方法。前两个是将从固定签名接收的数据转换为第三个签名的常规方法参数的处理程序。在第三种情况下,您可以实现两种情况下都需要触发的逻辑
listView1_MouseClick(object sender, MouseEventArgs e)
{
getListViewSelected(MyDataType.FromMouseEventArgs(e));
}
listView1_KeyDown(object sender, KeyEventArgs e)
{
getListViewSelected(MyDataType.FromKeyEventArgs(e));
}
private void getListViewSelected(MyDataType data)
{
//Do your stuff
}
MyDataType类的一个示例:
public class MyDataType
{
public string AnyThingOfInterest
{
get; set;
}
public static MyDataType FromKeyEventArgs(KeyEventArgs e)
{
return new MyDataType() { AnyThingOfInterest = e.ToString() };
}
public static MyDataType FromMouseEventArgs(MouseEventArgs e)
{
return new MyDataType() { AnyThingOfInterest = e.ToString() };
}
}
请显示完整的代码,而不仅仅是函数头。。你到底想做什么?你知道鼠标点击时会调用MouseClick,键盘按键时会调用KeyDown吗?这两个事件用于处理完全不同的输入类型。除非您真正知道自己在做什么,否则我不建议您尝试将它们视为同一件事。您始终可以创建类似于
void DoSomething(EventArgs e)
的方法,从这两者调用它,只需检查if(e是MouseEventArgs)
你应该解释你想在你的方法中实现什么getListViewSelected
?什么是MyDataType
我无法得到这个。我将在答案中添加一个示例实现。我不确定您想要实现什么,但通过这种方式,您通常可以获得只填充了两个可能输入的ToString()值的anythingFindTerest属性。你应该编辑它以满足你的需要。
public class MyDataType
{
public string AnyThingOfInterest
{
get; set;
}
public static MyDataType FromKeyEventArgs(KeyEventArgs e)
{
return new MyDataType() { AnyThingOfInterest = e.ToString() };
}
public static MyDataType FromMouseEventArgs(MouseEventArgs e)
{
return new MyDataType() { AnyThingOfInterest = e.ToString() };
}
}