⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cs

📁 自己写的可扩展插件文件管理器
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Collections;
using Core.Services;
using Core.Services.Management;
using Core.Services.Sdk;
using System.IO;
using System.Diagnostics;

namespace Signercompress
{

    public partial class MainForm : Form
    {
        private PluginManager pm;
        private IconListManager im;
        private ArrayList al=new ArrayList();
        private string RenameCache;
        private List<string> ToCopies=new List<string>();
        private bool DelOrigin = false;


        private void Menu_Click(object sender, EventArgs e)
        {
            if (al.Count > 0)
            {
                ToolStripMenuItem t = sender as ToolStripMenuItem;
                foreach (BasePluginInfo p in pm.PluginInfos)
                {
                    if (t.Tag.ToString().ToUpper() == p.Guid.ToString().ToUpper())
                    {
                        tslStatus.Text = "正在使用" + p.Name + "处理...";
                        pm.AssignTask(t, al, new ProgressChangedEventHandler(this.Progress_Changed));

                        tsbStop.Visible = true;
                        break;
                    }
                }
            }
        }

        private void Progress_Changed(object sender, Core.Services.Sdk.ProgressChangedEventArgs e)
        {
            this.toolStripProgressBar1.Maximum = e.Max;
            if (toolStripProgressBar1.Maximum > e.Progress)
                this.toolStripProgressBar1.Value = e.Progress;
            else
            {
                this.toolStripProgressBar1.Value = e.Progress;
               this.toolStripProgressBar1.Value = 0;
               tslStatus.Text = "就绪";
               tsbStop.Visible = false;
               Refresh();
            }
        }

        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {

           Control.CheckForIllegalCrossThreadCalls = false;
           pm=new PluginManager("plugins",false,new EventHandler(this.Menu_Click),this);
           try
           {
               foreach (ToolStripMenuItem t in pm.Menu.Items)
               {
                   t.MouseMove += new MouseEventHandler(Menu_MouseMove);
                   t.MouseLeave += new EventHandler(Menu_MouseLeave);
               }
           }
            catch (Exception)
           {
               MessageBox.Show("没有可用的插件。");
            }
           this.lvFiles.ContextMenuStrip = pm.Menu;
           foreach (BasePluginInfo bpi in pm.PluginInfos)
           {
               ListViewItem l = lvPlugins.Items.Add(bpi.Name);
               l.SubItems.Add(bpi.Version.ToString());
               l.SubItems.Add(bpi.Description);
               l.SubItems.Add(bpi.Guid.ToString().ToUpper());
               l.SubItems.Add(bpi.Author);
           }
           im=new IconListManager(imSmall, imLarge);
            exTree.SelectedPath=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\\";
            Refresh();
        }

        void Menu_MouseLeave(object sender, EventArgs e)
        {
            
            tslStatus.Text = "就绪";
        }

        void Menu_MouseMove(object sender, MouseEventArgs e)
        {
            ToolStripMenuItem t = sender as ToolStripMenuItem;
            if (t != null)
            {
                foreach (BasePluginInfo bpi in pm.PluginInfos)
                {
                    if (t.Name == bpi.Guid.ToString())
                        tslStatus.Text = bpi.Description;
                }
            }
        }

        new private void Refresh()
        {
            string[] fs = Directory.GetFiles(exTree.SelectedPath);
            string[] ds = Directory.GetDirectories(exTree.SelectedPath);
            lvFiles.Items.Clear();
            im.ClearLists();
            imLarge.Images.Add(IconReader.GetFolderIcon(IconReader.IconSize.Large, IconReader.FolderType.Open).ToBitmap());
            imSmall.Images.Add(IconReader.GetFolderIcon(IconReader.IconSize.Small, IconReader.FolderType.Open).ToBitmap());
            foreach (string s in ds)
            {
                DirectoryInfo f = new DirectoryInfo(s);
                lvFiles.Items.Add(f.Name, 0);
            }
            foreach (string s in fs)
            {
                FileInfo f = new FileInfo(s);
                if (f!=null)
                {
                    imLarge.Images.Add(f.Name,IconReader.GetFileIcon(f.FullName,IconReader.IconSize.Large,false));
                    imSmall.Images.Add(f.Name,IconReader.GetFileIcon(f.FullName,IconReader.IconSize.Small,false));
                    lvFiles.Items.Add(f.Name,f.Name);
                }


                }
        }

        private void exTree_PathChanged(object sender, EventArgs e)
        {       
            fsWatcher.Path = exTree.SelectedPath;
            Refresh();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            pm.Dispose();
            Application.Exit();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (lvFiles.View == View.LargeIcon)
                lvFiles.View = View.List;
            else lvFiles.View = View.LargeIcon;
        }

        private void tsbStop_Click(object sender, EventArgs e)
        {
            pm.StopTask();
            tslStatus.Text = "就绪";
            toolStripProgressBar1.Value = 0;
            toolStripProgressBar1.Maximum = 0;
            tsbStop.Visible = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (lvPlugins.Visible)
            {   
                button1.Text = "转到插件浏览视图";
                lvPlugins.Visible = false;
                lvFiles.Visible = true;
            }
            else
            {
                button1.Text = "转到文件列表视图";
                lvPlugins.Visible = true;
                lvFiles.Visible = false;
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            AboutBox1 a =new AboutBox1();
            a.Show();
            this.Enabled = false;
            a.FormClosing += new FormClosingEventHandler(a_FormClosing);
        }

        void a_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Enabled = true;
        }

        private void fsWatcher_Created(object sender, FileSystemEventArgs e)
        {
            Refresh();
        }

        private void fsWatcher_Deleted(object sender, FileSystemEventArgs e)
        {
            Refresh();
        }

        private void fsWatcher_Renamed(object sender, RenamedEventArgs e)
        {
           Refresh();
        }

        private void lvFiles_MouseClick(object sender, MouseEventArgs e)
        {
                al.Clear();
                foreach (int i in lvFiles.SelectedIndices)
                {
                    al.Add(exTree.SelectedPath + "\\" + lvFiles.Items[i].Text);
                }
        }

        private void lvFiles_AfterLabelEdit(object sender, LabelEditEventArgs e)
        {
            if (e.Label != null)
            {
                if (File.Exists(exTree.SelectedPath + "\\" + RenameCache))
                {
                    try
                    {
                        File.Move(exTree.SelectedPath + "\\" + RenameCache, exTree.SelectedPath + "\\" + e.Label);
                    }
                    catch (Exception err)
                    {
                        MessageBox.Show(err.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                }
                else
                {
                    try
                    {
                        Directory.Move(exTree.SelectedPath + "\\" + RenameCache, exTree.SelectedPath + "\\" + e.Label);
                    }
                    catch (Exception err)
                    {
                        MessageBox.Show(err.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                }
            }
        }

        private void lvFiles_BeforeLabelEdit(object sender, LabelEditEventArgs e)
        {
            RenameCache =lvFiles.Items[e.Item].Text;
        }

        private void lvFiles_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            ListViewItem l = lvFiles.SelectedItems[0];
            if ((l!=null)&&(e.Button==MouseButtons.Left))
            {
                try
                {
                    if (File.Exists(exTree.SelectedPath + "\\" + l.Text))
                        Process.Start(exTree.SelectedPath + "\\" + l.Text);
                    else
                    {
                        if ((l.Tag == null)||((bool)l.Tag != false))
                        {
                            exTree.SelectedPath = exTree.SelectedPath+"\\"+l.Text;
                            Refresh();
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "无法打开" + l.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -