首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Piccolo ZUI -只有当CTRL摇摆不定的时候?

C# Piccolo ZUI -只有当CTRL摇摆不定的时候?
EN

Stack Overflow用户
提问于 2009-12-21 17:47:16
回答 2查看 391关注 0票数 1

我正在C# Winform应用程序中使用C#。

库显示的示例之一是向画布中添加一个扭动 (行绘制)处理程序。

问题是,如果您启用了squiggle处理程序并允许画布拖动,那么这两个事件都同时发生。

我想要做的是继承PDragEventhandler,以便它只在不按下CTRL时运行。然后,当按下CTRL键时,squiggler就会运行(我已经知道了)。

用于拖动处理程序的代码是:

代码语言:javascript
复制
InitializeComponent();
//add input event listener            
pCanvas1.AddInputEventListener(new PDragEventHandler());

我是否可以继承PDragEventhandler,然后说只有当CTRL未按下时才能运行?还是需要重新编译Piccolo库以启用此功能?

EN

回答 2

Stack Overflow用户

发布于 2010-01-07 05:55:21

对于java来说,它是非常直接的。在初始化过程中,您需要进行以下更改:

代码语言:javascript
复制
public void mouseDragged(PInputEvent e) {
    super.mouseDragged(e);

    // Update the squiggle while dragging.
    updateSquiggle(e);
}

代码语言:javascript
复制
public void mouseDragged(PInputEvent e) {
     super.mouseDragged(e);
     if (e.isControlDown()) {
         updateSquiggle(e);
     }   
}

Explanantion:这是可能的,因为PInputEvent继承了java事件,因此具有isControlDown()选项。在C#中,情况并非如此,您需要手动扩展它,或者添加它。下面的教程.第3部分描述了如何为C# (我不太熟悉)做这件事

对于C#,我假设侦听器应该如下所示:

代码语言:javascript
复制
protected void squiggle_ControlDown(object sender, PInputEventArgs e) {
    PNode node = (PNode)sender;
    switch (e.KeyCode) {
            case Keys.Control:
                    updateSquiggle();
                    break;
    }

}

我希望这会有所帮助,我希望我没有这么久没有使用过C#,或者我可以给你一个更具体的答案。

票数 3
EN

Stack Overflow用户

发布于 2011-12-24 07:26:57

您可以重写acceptsEvent()方法来控制事件调度。例如,仅接受带有控件键修饰符的事件:

代码语言:javascript
复制
public class DragHandler extends PDragEventhandler {
    @Override
    public boolean acceptsEvent(PInputEvent event, int type) {
        return super.acceptsEvent(event, type) && event.isControlDown();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1941564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档