首页 > 其他分享 >SpreadsheetControl组件修改,拖拽、新建、打开文件在独立浮窗打开

SpreadsheetControl组件修改,拖拽、新建、打开文件在独立浮窗打开

时间:2024-04-17 17:48:30浏览次数:33  
标签:文件 string filePath text void private SpreadsheetControl 打开 浮窗

一、修改文件拖拽功能,使其能够在另外一个独立窗体打开,需要配合documentManager控件实现。

实现后效果:将11.xlsx文件拖拽到工作区

 1.创建XExceluserControl用户窗体,代码如下:

 public partial class XExcelUserControl : DevExpress.XtraEditors.XtraUserControl
 {

     public string filePath;
     public XExcelUserControl(string filePath = "")

     {
         InitializeComponent();
         this.filePath = filePath;
         loadDocument();
     }
     
     /// <summary>
     /// 加载excel
     /// </summary>
     /// <param name="filePath"></param>
     private void loadDocument() 
     {
         if (File.Exists(filePath))
         {
             IWorkbook workbook = spreadsheetControl1.Document;
             workbook.LoadDocument(filePath);
         }
         
     }

     private void XExcelUserControl_Load(object sender, EventArgs e)
     {
         spreadsheetControl1.DragEnter += SpreadsheetControl1_DragEnter;// 添加拖拽文件的事件处理程序
         spreadsheetControl1.DragOver += SpreadsheetControl1_DragOver;

         // 隐藏快速访问工具栏和应用程序按钮
         ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
         ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
     }


     private void SpreadsheetControl1_DragEnter(object sender, DragEventArgs e)
     {
         Console.WriteLine("SpreadsheetControl1_DragEnter");
         if (e.Data.GetDataPresent(DataFormats.FileDrop))
         {
             // 获取拖拽的文件路径数组
             string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);

             // 处理每个文件路径
             foreach (string filePath in filePaths)
             {
                 XExcelManageForm manageForm = Application.OpenForms.OfType<XExcelManageForm>().FirstOrDefault();
                 manageForm.CreateForm(filePath);
                 // 处理拖拽的文件路径,例如打开文件等
                 Console.WriteLine("拖拽文件路径:" + filePath);
                 return;
             }
         }

     }

     private void SpreadsheetControl1_DragOver(object sender, DragEventArgs e)
     {
         e.Effect = DragDropEffects.None;
     }
 }

2.创建XExcelManageForm窗体,加入下面代码

        public int autoTmpId = 0;
        public  void CreateForm(string text="") 
        {
            string _text;
            if (text!="")
            {
                //获取文件最后两级,预防不同目录文件重名
                _text = Path.GetFileName(Path.GetDirectoryName(text)) + '/' + Path.GetFileName(text);
            }
            else
            {
                //创建临时excel的时候会走这里
                _text = "临时";
                if (autoTmpId!=0)
                {
                    _text += "_" + autoTmpId;
                }
                autoTmpId++;
            }
            // 检查是否已经打开了相同路径的文档
            foreach (Document doc in tabbedView1.Documents)
            {
                XExcelUserControl form = doc.Control as XExcelUserControl;
                if (form.filePath == text)
                {
                    // 如果已经存在相同路径的文档,则激活该文档并返回
                    tabbedView1.ActivateDocument(doc.Control);
                    return;
                }
            }
            XExcelUserControl xExcelForm = new XExcelUserControl(text);
            xExcelForm.Text = _text;
            tabbedView1.AddDocument(xExcelForm);
            tabbedView1.ActivateDocument(xExcelForm);
        }

二、自带的File Bars创建的fileRibbonPage1中的新建文件FileNew功能不是在新的独立浮窗打开

实现后效果:点击新建按钮

 1.删除原先新建按钮,再重新创建一个barButtonItem1按钮,添加图片展示和原按钮一样。(原先按钮组件自动生成的,不知道怎么修改)

2.添加点击事件

private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)
{
    FileNew();
}
/// <summary>
/// 新建文档
/// </summary>
private void FileNew(string _filePath = "")
{
    XExcelManageForm manageForm = (XExcelManageForm)CommonForm.GetActivedForm<XExcelManageForm>();
    manageForm.CreateForm(_filePath);
}

3.修改spreadsheetControl1自带的快捷键"ctrl+N"

private void SpreadsheetControl1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.N)
    {
        FileNew();
        e.Handled = true;//阻止事件继续传播
    }

}

三、自带的File Bars创建的fileRibbonPage1中的新建文件OpenFile功能不是在新的独立浮窗打开

实现后效果:点击新建按钮

 

 

 

1.该步骤与标题二一样

2.添加点击事件

private void barButtonItem2_ItemClick(object sender, ItemClickEventArgs e)
{
    OpenFile();
}

#region 非事件

/// <summary>
/// 新建文档
/// </summary>
private void FileNew(string _filePath = "")
{
    XExcelManageForm manageForm = (XExcelManageForm)CommonForm.GetActivedForm<XExcelManageForm>();
    manageForm.CreateForm(_filePath);
}

private void OpenFile()
{
    string _filePath = FileTool.OpenFile(FileTool.ExcelFileFilter);
    if (_filePath != null)
    {
        FileNew(_filePath);
    }
}
#endregion
OpenFile可以自行找位置加上
public const string TextFileFilter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";
public const string ExcelFileFilter = "Excel 文件 (*.xls;*.xlsx)|*.xls;*.xlsx|所有文件 (*.*)|*.*";
public const string JsonFileFilter = "JSON 文件 (*.json)|*.json|所有文件 (*.*)|*.*";
public const string DbFileFilter = "db 文件 (*.db)|*.db|所有文件 (*.*)|*.*";
public static string OpenFile(string filter)
{
    using (OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        openFileDialog.Filter = filter;
        openFileDialog.FilterIndex = 1;
        openFileDialog.RestoreDirectory = true;

        DialogResult result = openFileDialog.ShowDialog();

        if (result == DialogResult.OK)
        {
            // 用户选择了文件,将文件路径显示在文本框中
            return openFileDialog.FileName;
        }
        return null; // 或者可以返回空字符串 ""
    }
}

3.修改spreadsheetControl1自带的快捷键"Ctrl+O"

  private void SpreadsheetControl1_KeyDown(object sender, KeyEventArgs e)
  {
      if (e.Control && e.KeyCode == Keys.N)
      {
          FileNew();
          e.Handled = true;//阻止事件继续传播
      }
      if (e.Control && e.KeyCode == Keys.O)
      {
          OpenFile();
          e.Handled = true;//阻止事件继续传播
      }
  }

 

标签:文件,string,filePath,text,void,private,SpreadsheetControl,打开,浮窗
From: https://www.cnblogs.com/aj407blogs/p/18141353

相关文章

  • 2-81. 创建交易窗口 UI 并实现拖拽交易打开交易窗口
    关闭窗口修改EventHandler修改InventoryUI修改NPCFunction打开窗口人物无法移动修改Enums修改EventHandler修改NPCFunction修改Player打开对话框人物还可以移动修改DialogController打开商店的时候同时打开背包调整背包和商店锚点位置修改Inven......
  • 设置vue项目运行后,自行打开浏览器。src起别名
    1:设置vue项目运行后,自行打开浏览器找到package.json配置文件 2:src起别名,这样就可以直接找到文件路径,不需要../../的这些繁琐操作。意思直接使用@符号就代表src目录1):在vite.config.ts修改import{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'//引入n......
  • 报关软件-单一窗口打开报错50070
    事件起因:某报关行客户电话报修,USB版本的单一窗口无法登陆,下图为客户提供的报错截图 在重新安装了单一窗口的客户端控件之后,报错内容更改,但问题并未解决  解决办法:1、删除浏览器的所有记录(包括下载记录、浏览记录、cookie等等,需要完全清......
  • Win7 在此处打开命令窗口_删除图标 批处理
    前言全局说明Win7在此处打开命令窗口_删除图标批处理一、添加显示图标@ECHOOFFregaddHKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\cmd/vIcon/tREG_SZ/d"cmd.exe"/fecho.&pause将以上内容保存到文本中,文本后缀为.bat,右键以管理员方......
  • pageoffice给在线打开的excel单元格插入图片
    转载:单元格添加图片#单元格添加图片查看本示例演示效果本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。Java命名空间com.zhuozhengsoft.pageoffice.excelwriter中的......
  • python基础-数据类型、字典、集合、文件操作(打开、关闭、读写、追加等)
    前言!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:​​2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战​数据结构数据类型字符串列表元组集合字典整型布尔None浮点型字节类......
  • 【转载】[Excel] Excel打开第二个文件很慢的解决方法
    问题描述        该问题具体表现为:当打开第一个Excel文件后,在不关闭它的情况下接着打开第二个Excel文件,第二个Excel文件会延迟几秒之后才会正常打开。        注意,前提是第一个Excel文件打开速度是正常的,否则本解决方案大概率对你无效。    我的环境......
  • 在 VS 中快速定位打开的文件
    快速定位打开的文件在VS中,你可以使用Ctrl+T打开“GoToAll”搜索工具栏,通过搜索关键字轻松打开要找的文件。但是对于某些操作,比如重命名文件,你需要在解决方案资源管理器中找到该文件。使用Ctrl+[,S或使用下面的图标按钮可以快速定位到当前打开的文件:原文链接ht......
  • Linux环境变量,打开的 shell 选项 himBHs 和 hBc
    前言全局说明Linux环境变量himBHs和hBc一、说明$-记录的是当前配置打开的shell选项,而himBH是其默认值。二、查看环境变量2.1本地执行echo$-2.1查看远程环境变量[email protected]'echo$-'127.0.0.1实际是本机回环,但是假设是远程机器的IP,效果是一......
  • 一次性关闭所有打开的word窗口
    bat实现将以下代码放到test.bat文件里,双击执行@echoofftaskkill/f/imWINWORD.EXEexittaskkill/f/imWINWORD.EXE:这一行使用了taskkill命令来结束名为WINWORD.EXE的进程。/f参数强制结束进程,而/im参数指定了要结束的进程的映像名称(即进程的文件名)。注意:......