none
为什么我在弹出菜单上点击一次会产生点击五次的效果 RRS feed

  • 问题

  • http://tr0217.blog.163.com/blog/static/36066480201010141627616/,这是插件框架的使用说明。

    我编写了一个可以在这个插件框架中使用的浏览器插件。

    插件框架文件和浏览器插件的代码下载地址http://u.115.com/file/t54b76f278

    为插件中的网页窗口的标题栏配置了几个弹出菜单,这些弹出菜单执行的方法和主菜单上执行的方法是一样的,但是在弹出菜单上点击一次会连续执行这个方法五次,而在主菜单上就不会。

    为了测试我在IE插件里有增加了一个窗口Form1,这个Form1和网页窗口是一样的都是一个weifenluo的dockcontent容纳了一个AxWebBrowser控件,为其配置了右键菜单。此时弹出菜单是正常的。为了进一步试验把网页窗口中的多余代码都注释掉试了一下,仍然连续执行五次。

    希望有高手帮忙解答一下。

     

    2010年11月16日 3:23

答案

  • 谢谢你。

    早已改好了,前段时间比较忙。只是放到这http://u.115.com/file/t523e3577c了。没有贴过来。

    1、

    上面的第二个问题有的能装载上有的不能装载上也是在编写这个插件框架时发生的,有这个问题的插件框架的下载地址是http://u.115.com/file/f551d78a81

    装载不上的说明图片http://img104.ph.126.net/m0futsknNNvVdt64WosbVQ==/717761190614133405.jpg

    这是偶尔装载不上的插件注册程序的源码:   

     static class Program
      {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          ServiceCollection _serviceCollection = new ServiceCollection();
          _serviceCollection.Load();
          UiService uiService = new UiService();
          uiService.ModifyAddIns(_serviceCollection);
        }
      }
    
    
    这是不会出现问题的:
      static class Program
      {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
          AppFrame app = new AppFrame();
          app.RunConfig();
        }
      }

    配置程序启动时完成装载过程所处的执行文件不一样。

    即使你把程序下下来执行也不一定会出现这样的问题。所以您完全可以不用浪费时间在这个问题上。

    2、子控件的Dock与父控件的Size间的冲突

    这个问题后来又重新确认了一下,不是Dock。而是用作弹出的控件的上边或者下边与其子控件的边重合时就会出现这样的问题。

    这是ContextContainer代码地址http://u.115.com/file/f53565dd81

    这个错误的图片http://img534.ph.126.net/qgqyzIgoO6qGsLlrosltkw==/1325465665331549325.jpg

    2010年12月8日 7:53

全部回复

  • 你好:

    由于这不是一个微软框架产品,我们对此框架不是十分了解。

    我们认为您可以联系该框架的作者 (http://tr0217.blog.163.com),他会更清楚知道你所遇到的问题。

    谢谢

    Yi


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2010年11月16日 8:15
  • 你好:

    由于这不是一个微软框架产品,我们对此框架不是十分了解。

    我们认为您可以联系该框架的作者 (http://tr0217.blog.163.com),他会更清楚知道你所遇到的问题。

    谢谢

    Yi


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.

    不好意。这个插件框架也是我写的,插件控件也在测试中。对于其它的窗口没什么问题,就是这个窗口有问题。

    使用.NET时老是遇到莫名奇妙的问题。

    1、子控件的Dock与父控件的Size间的冲突,具体说明看下面的链接。

    http://topic.csdn.net/u/20100924/15/69b43bf7-2ab8-4ca2-ad4b-a064bd282e9d.html

    2、编写了一个示例程序,里边用了Assembly来装载一个程序集。有时运行程序能够装载上,有时候不能够装载上。程序的代码没有修改,程序集的目录结构也没有发生任何变化。

    3、有时候Assembly在装载一个程序集时分明抛出来异常,但是仍然能够使用Assembly创建类实例并调用方法。然后把这个程序放到了另外一台电脑上运行,也抛出同样的异常,但是不能使用Assembly创建类实例并调用方法。重装系统后也可以了。

    这些问题再一些论坛上发过了,没人能够解决。如果您希望挑战这些问题,前两个能够提供源码。

    2010年11月17日 3:47
  • 这个问题,我调试了一下。弹出菜单的方法执行到返回语句后立即跳转到方法的第一句了。用的是单步执行。
    2010年11月17日 3:52
  • 你好,

    我们需要你的测试项目来重现问题并进行分析,我们现在可以使用你共享出来的应用程序,并可看到你所说的问题,但是没有代码,我们无法对此问题进行进一步的分析以及给出解决方案。

    希望你能共享出你的那个测试项目的源码,使得我们可以重现你的问题,这样我们才能进行下一步。

    Have a nice day!

    Mike

    *****************************************************

    [All-In-One Code Framework]

    Sample world! You will get more from this world!

    Welcome to the new world!

     

    2010年11月17日 8:07
    版主
  • 忽然发现一个奇怪的规律,为标题配置几个菜单点击一次就会产生点击几次的效果。知道规律了就比较容易改了。无论改好还是没改好都会把源码公布出来。

    2010年11月19日 4:14
  • 呵呵,祝你成功!

    如果对此问题依然有什么疑问,可以随时回来发出你的疑问。

    Mike

    *****************************************************

    [All-In-One Code Framework]

    Sample world! You will get more from this world!

    Welcome to the new world!

    2010年11月19日 4:48
    版主
  • 谢谢你。

    早已改好了,前段时间比较忙。只是放到这http://u.115.com/file/t523e3577c了。没有贴过来。

    1、

    上面的第二个问题有的能装载上有的不能装载上也是在编写这个插件框架时发生的,有这个问题的插件框架的下载地址是http://u.115.com/file/f551d78a81

    装载不上的说明图片http://img104.ph.126.net/m0futsknNNvVdt64WosbVQ==/717761190614133405.jpg

    这是偶尔装载不上的插件注册程序的源码:   

     static class Program
      {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          ServiceCollection _serviceCollection = new ServiceCollection();
          _serviceCollection.Load();
          UiService uiService = new UiService();
          uiService.ModifyAddIns(_serviceCollection);
        }
      }
    
    
    这是不会出现问题的:
      static class Program
      {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
          AppFrame app = new AppFrame();
          app.RunConfig();
        }
      }

    配置程序启动时完成装载过程所处的执行文件不一样。

    即使你把程序下下来执行也不一定会出现这样的问题。所以您完全可以不用浪费时间在这个问题上。

    2、子控件的Dock与父控件的Size间的冲突

    这个问题后来又重新确认了一下,不是Dock。而是用作弹出的控件的上边或者下边与其子控件的边重合时就会出现这样的问题。

    这是ContextContainer代码地址http://u.115.com/file/f53565dd81

    这个错误的图片http://img534.ph.126.net/qgqyzIgoO6qGsLlrosltkw==/1325465665331549325.jpg

    2010年12月8日 7:53
  • 谢谢你把你的经验分享出来给大家!

    Mike


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to Microsoft All-In-One Code Framework to download or request code samples from Microsoft Community Team!
    2010年12月8日 7:58
    版主