【问题标题】:How to set two types of variables for same method in C#如何在 C# 中为同一方法设置两种类型的变量
【发布时间】:2017-06-05 03:43:42
【问题描述】:

我有一个ListViewtwo events,

1 listView1_MouseClick(object sender, MouseEventArgs e)

2 listView1_KeyDown(object sender, KeyEventArgs e)

我需要为这两个事件创建一个方法,但问题是每个事件都有不同的返回类型。我创建了一个方法getListViewSelected(e)

 private void getListViewSelected(KeyEventArgs e)
        {}

但在listView1_MouseClick(object sender, MouseEventArgs e) 的情况下,参数无效。有什么办法吗?

【问题讨论】:

  • 请你展示你的完整代码,而不仅仅是函数头。你到底想做什么?
  • 你知道鼠标点击时会调用MouseClick,按下键盘键时会调用KeyDown吗?
  • 这两个事件用于处理完全不同的输入类型。除非您真的知道自己在做什么,否则我不建议您尝试将它们视为同一件事。
  • 您总是可以创建像void DoSomething(EventArgs e) 这样的方法,从两者中调用它,然后检查if ( e is MouseEventArgs )
  • 你应该解释你想在你的方法中实现什么getListViewSelected ?

标签: c# methods arguments


【解决方案1】:

制作 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() };
     }
}

【讨论】:

  • MyDataType 是什么?我听不懂。?
  • 我将在答案中添加一个示例实现。我不确定您要完成什么,但通过这种方式,您通常可以获得属性 AnyThingOfInterest 刚刚填充了两个可能输入的 ToString() 值。您应该对其进行编辑以满足您的需要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 2016-03-27
相关资源
最近更新 更多