我必须使用触摸显示器,有时使用鼠标和普通显示器。
因此,对于拖放,第一个将是
private void lvAllowedPPtab2_StylusButtonDown(object sender,StylusButtonEventArgs e)
和第二次
private void ListBox_PreviewMouseLeftButtonDown(object sender,MouseButtonEventArgs e)
之后我必须使用sender和e。
执行相同的代码我没有做一个通用的代码例程。 这两个事件是相似的,都有GetPosition事件。
我可能采取了错误的道路,但我已经做了类似的事情:
Type eventType;
if (_e is StylusButtonEventArgs)
eventType = typeof (StylusButtonEventArgs);
else
eventType = typeof(MouseEventArgs);
但后来我不知道如何将e转换为事件类型。
谢谢
答案 0 :(得分:1)
你可以用它们打电话给他们
private void listView_StylusButtonDown(object sender, StylusButtonEventArgs e) { CommonCode(sender, e); }
private void listView_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e) { CommonCode(sender, e); }
然后告诉公共代码
private void CommonCode(object sender, object _e)
{
//Sender is common
ListView parent = (ListView)sender;
string strListViewButtonName = (sender as ListView).Name;
if (_e is StylusButtonEventArgs)
... (_e as StylusButtonEventArgs).GetPosition(parent));
else
... (_e as MouseEventArgs).GetPosition(parent));
}
更好的实施(感谢Eli Arbel):
private void listView_StylusButtonDown(object sender, StylusButtonEventArgs e) { CommonCode(sender, e.GetPosition((ListView)sender)); }
private void listView_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e) { CommonCode(sender, e.GetPosition((ListView)sender)); }
private void CommonCode(object sender, Point p)
{
//Sender is common
ListView parent = (ListView)sender;
string strListViewButtonName = (sender as ListView).Name;
//you don't need getPosition since P is known
}