我正在C# Winform应用程序中使用C#。
库显示的示例之一是向画布中添加一个扭动 (行绘制)处理程序。
问题是,如果您启用了squiggle处理程序并允许画布拖动,那么这两个事件都同时发生。
我想要做的是继承PDragEventhandler,以便它只在不按下CTRL时运行。然后,当按下CTRL键时,squiggler就会运行(我已经知道了)。
用于拖动处理程序的代码是:
InitializeComponent();
//add input event listener
pCanvas1.AddInputEventListener(new PDragEventHandler());我是否可以继承PDragEventhandler,然后说只有当CTRL未按下时才能运行?还是需要重新编译Piccolo库以启用此功能?
发布于 2010-01-07 05:55:21
对于java来说,它是非常直接的。在初始化过程中,您需要进行以下更改:
public void mouseDragged(PInputEvent e) {
super.mouseDragged(e);
// Update the squiggle while dragging.
updateSquiggle(e);
}至
public void mouseDragged(PInputEvent e) {
super.mouseDragged(e);
if (e.isControlDown()) {
updateSquiggle(e);
}
}Explanantion:这是可能的,因为PInputEvent继承了java事件,因此具有isControlDown()选项。在C#中,情况并非如此,您需要手动扩展它,或者添加它。下面的教程.第3部分描述了如何为C# (我不太熟悉)做这件事
对于C#,我假设侦听器应该如下所示:
protected void squiggle_ControlDown(object sender, PInputEventArgs e) {
PNode node = (PNode)sender;
switch (e.KeyCode) {
case Keys.Control:
updateSquiggle();
break;
}}
我希望这会有所帮助,我希望我没有这么久没有使用过C#,或者我可以给你一个更具体的答案。
发布于 2011-12-24 07:26:57
您可以重写acceptsEvent()方法来控制事件调度。例如,仅接受带有控件键修饰符的事件:
public class DragHandler extends PDragEventhandler {
@Override
public boolean acceptsEvent(PInputEvent event, int type) {
return super.acceptsEvent(event, type) && event.isControlDown();
}
}https://stackoverflow.com/questions/1941564
复制相似问题