none
VB for office tools程序问题 RRS feed

  • 问题

  •  

    VB for office tools程序里面建了几个窗体。

    想让其中的一个窗体在启动时第一个显示。

    可是初始屏幕的那个设置项是灰的,不能设。怎么回事呀?

    2008年10月7日 8:49

答案

  • 您好,

     

    VSTO的插件的工作原理大致是,

     

    1.Office程序先启动,主窗口显示出来

    2.Office从注册表中寻找是否有插件要装载,如果有,程序集在哪儿

    3.按照注册表搜索的结果,装载插件的程序集,调用ThisAddIn_Startup方法,执行我们插件的代码。

     

    由此可以看出,在我们的代码执行前,Office的主窗体就已经显示在屏幕上了。所以我的看法是,要在Excel窗体显示前显示我们的登陆窗体是不可能的。

     

    我能否建议以下两种方法,看看是否有所帮助,

     

    1.在ThisAddIn_Startup函数中,调用Form的ShowDialog方法来显示我们的登陆窗口。这样除非我们登陆成功,Excel的主窗口将处于不可操作状态。如果我们担心Excel已经有工作簿打开,主窗体中会显示我们不想让非权限客户看到的数据,那么在Form.ShowDialog之前,我们可以将当前的工作簿通过代码关闭,并保存他们路径,等用户通过验证之后,在把工作簿打开。

     

    2.在ThisAddIn_Startup函数中,把Application.Visible属性设为false,等通过验证后,将其设置回true。

    ThisAddIn.cs

            private void ThisAddIn_Startup(object sender, System.EventArgs e)
            {
                this.Application.Visible = false;
                Form1 f = new Form1();
                f.Show();
            }

    Form1.cs:

            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Globals.ThisAddIn.Application.Visible = true;
            }

    不过Excel的主窗体还是会闪一下。

     

    用Excel插件做登陆验证窗体,有一点要注意,登陆认证完全依赖于Excel的插件的装载和运行。如果当前登陆操作系统的用户有足够的权限,去把注册表中的插件入口或者插件的程序集删除的话,Excel会照常运行并把数据显示给用户,我们的登陆窗体根本就不会被显示出来。

     

    2008年10月13日 7:03

全部回复

  • 那现在启动显示的是什么

    2008年10月7日 9:00
    版主
  • 我做的是EXCEL程序,现在启动EXCEL啊。我做了个登录窗体,想在启动EXCEL之前启动那个登录窗体。

     

    2008年10月8日 0:34
  • 可以通过启动事件处理吧
    2008年10月8日 1:03
    版主
  • 在哪里写?给个代码吧

    2008年10月8日 9:34
  • 您好,

     

    VSTO的插件的工作原理大致是,

     

    1.Office程序先启动,主窗口显示出来

    2.Office从注册表中寻找是否有插件要装载,如果有,程序集在哪儿

    3.按照注册表搜索的结果,装载插件的程序集,调用ThisAddIn_Startup方法,执行我们插件的代码。

     

    由此可以看出,在我们的代码执行前,Office的主窗体就已经显示在屏幕上了。所以我的看法是,要在Excel窗体显示前显示我们的登陆窗体是不可能的。

     

    我能否建议以下两种方法,看看是否有所帮助,

     

    1.在ThisAddIn_Startup函数中,调用Form的ShowDialog方法来显示我们的登陆窗口。这样除非我们登陆成功,Excel的主窗口将处于不可操作状态。如果我们担心Excel已经有工作簿打开,主窗体中会显示我们不想让非权限客户看到的数据,那么在Form.ShowDialog之前,我们可以将当前的工作簿通过代码关闭,并保存他们路径,等用户通过验证之后,在把工作簿打开。

     

    2.在ThisAddIn_Startup函数中,把Application.Visible属性设为false,等通过验证后,将其设置回true。

    ThisAddIn.cs

            private void ThisAddIn_Startup(object sender, System.EventArgs e)
            {
                this.Application.Visible = false;
                Form1 f = new Form1();
                f.Show();
            }

    Form1.cs:

            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Globals.ThisAddIn.Application.Visible = true;
            }

    不过Excel的主窗体还是会闪一下。

     

    用Excel插件做登陆验证窗体,有一点要注意,登陆认证完全依赖于Excel的插件的装载和运行。如果当前登陆操作系统的用户有足够的权限,去把注册表中的插件入口或者插件的程序集删除的话,Excel会照常运行并把数据显示给用户,我们的登陆窗体根本就不会被显示出来。

     

    2008年10月13日 7:03