winform实现bs下载文件夹上传操作

作者:袖梨 2022-06-25

实验一 想到了WinForm 中的文件夹上传

    在WebForm中引用WinForm->“using System.Windows.Forms;” 这里要涉及线程操作

 代码如下 复制代码

[DirectMethod]
        public void TopBarClick(string strOpearate)
        {
            btnUpdateEmInfos(strOpearate); 
        }
        protected void btnUpdateEmInfos(string strOperate)
        {
            if (strOperate == "导入")
            {
                
                Thread s = new Thread(new ThreadStart(FoldDialog));
                //s.ApartmentState=ApartmentState.STA;
                //COM提供的线程模型共有三种:Single-Threaded Apartment(STA 单线程套间)、Multithreaded Apartment(MTA 多线程套间)和Neutral Apartment/Thread Neutral Apartment/Neutral Threaded Apartment(NA/TNA/NTA 中立线程套间,由COM+提供)。


                s.SetApartmentState(System.Threading.ApartmentState.STA);
                s.Start();

            }
        }

        ///


        /// 文件夹弹出框
        ///

        private void FoldDialog()
        {
            FolderDialog d = new FolderDialog();
            string path = string.Empty;
            if (d.ShowDialog() == DialogResult.OK)
            {
                path = d.Path;
            }
        }

FolderBrowserFolder

 代码如下 复制代码

namespace CRM_BS.WebUI.Common
{
    public class FolderDialog : FolderNameEditor
    {
        FolderNameEditor.FolderBrowser fDialog = new System.Windows.Forms.Design.FolderNameEditor.FolderBrowser { StartLocation = System.Windows.Forms.Design.FolderNameEditor.FolderBrowserFolder.Desktop };//逻辑桌面
        ///


        /// 显示文件夹浏览器对话框
        ///

        ///
        public DialogResult ShowDialog()
        {
            fDialog.Description =  "请选择文件夹" ;
            return fDialog.ShowDialog();
        }
        ///
        /// 获取或设置文件夹上方显示的说明
        ///

        /// 文件夹上方说明
        ///
        public DialogResult ShowDialog(string description)
        { 
            fDialog.Description = description;
            return fDialog.ShowDialog();
        }
        ///
        /// 文件夹目标路径
        ///

        public string Path
        {
            get
            {
                return fDialog.DirectoryPath;
            }
        } 
        ~FolderDialog()
        {
            fDialog.Dispose();
        }
    }
}

但是效果却如下: 

 

弹出框不是激活状态

 

单击弹出框 效果

 

 

要的就是这效果,但是功能上有缺陷……实验一宣告失败(如果你这样成功了还请告知……)

 

实验二 BS要这效果? 那JS应该可以 ,下手……

先看效果:

 

看上去,好像是满足了需求

 

通过方法,还能顺利取出路径

 

再看代码

 代码如下 复制代码

<%--导入--%>

   

后台代码

 代码如下 复制代码

//导入
            (X.GetCtl("btnTopBarArrowDown") as Ext.Net.Button).Listeners.Click.Handler = "BrowseFolder();";

       ///


        /// 导入->确定 方法
        ///

        ///
        [DirectMethod]
        public void GetPath(string path)
        {
            CommonMethod.Show("", path, Ext.Net.MessageBox.Icon.INFO);
        }

虽然表面上看“功能实现,代码也简洁,可以说是很成功” 但却牺牲了IE的安全性,需要进行一些设置。

步骤如图

一、

 

二、

 

 

再看看ActiveX 百科解释

  “ActiveX 是一个开放的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。 使用 ActiveX, 可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体 CD-ROM

所以可想而知,如果为了实现这个功能我们把ActiveX状态都设置成“启用”的后果是什么了……

 

语文上经常用到“前后呼应”,那么回归到之初的问题

相关文章

精彩推荐