.净紧凑的框架

方案:用户在一个屏幕。设备不能找到打印机和询问用户如果他们想要再试一次。如果他们点击"没有",目前的屏幕是关闭和他们返回到父菜单屏幕。如果他们点击"没有"按钮多次,第一次点击,将使用由没有按钮和下一个点击将生效一旦屏幕上已经完成了重绘。(在作用击一个菜单的项目,然后取用户的另一个屏幕。)

我没有看到一个很好的地方放一个等标...没有很多发生的事情时用户的点击"没有",除了一种形式关闭。但CF框架是缓慢的绘画面。

任何想法?

有帮助吗?

解决方案

随机的想法:

  • 禁用的一些控制在父母对话时的一个模式对话。我不相信你可以禁止整个形式,因为它是母的模式对话。
  • 或者我会建议使用一个透明的控制,以赶上的点击,但是,透明度是不支持在CF。
  • 有多少控制是在父母的话?我还没有找到CF.Net 慢在更新。是否有任何机会,对话是超载以及可以定制的绘制速度更快,与子控制?
  • 复盖未关闭酒店和处分类方法来处理加入/remvoing等待光标。

其他提示

您可以通过清除Windows消息队列来跳过挂起的点击 Application.DoEvents();

我们使用以下自定义Event类来解决您的问题(防止多次点击并在必要时显示等待光标):

using System;
using System.Windows.Forms;

public sealed class Event {

    bool forwarding;

    public event EventHandler Action;

    void Forward (object o, EventArgs a) {
        if ((Action != null) && (!forwarding)) {
            forwarding = true;
            Cursor cursor = Cursor.Current;
            try {
                Cursor.Current = Cursors.WaitCursor;
                Action(o, a);
            } finally {
                Cursor.Current = cursor;
                Application.DoEvents();
                forwarding = false;
            }
        }
    }

    public EventHandler Handler {
        get {
            return new EventHandler(Forward);
        }
    }

}

您可以验证它是否适用于以下示例(仅当HandleClick已终止时,控制台输出才会单击):

using System;
using System.Threading;
using System.Windows.Forms;

class Program {

    static void HandleClick (object o, EventArgs a) {
        Console.WriteLine("Click");
        Thread.Sleep(1000);
    }

    static void Main () {
        Form f = new Form();
        Button b = new Button();
        //b.Click += new EventHandler(HandleClick);
        Event e = new Event();
        e.Action += new EventHandler(HandleClick);
        b.Click += e.Handler;
        f.Controls.Add(b);
        Application.Run(f);
    }

}

要重现您的问题,请更改以上代码,如下所示(控制台输出所有点击,但有延迟):

        b.Click += new EventHandler(HandleClick);
        //Event e = new Event();
        //e.Action += new EventHandler(HandleClick);
        //b.Click += e.Handler;

Event类可用于暴露EventHandler事件的每个控件(Button,MenuItem,ListView,...)。

此致 tamberg

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top