Exemple #1
0
        private void УстановитьИконкуЭлемента(ЭлементДереваКаталогов Элемент, TreeListNode Узел)
        {
            switch (Элемент.ТипЭлемента)
            {
            case ТипЭлементаДереваКаталогов.МойКомпьютер:
                Узел.ImageIndex = МОЙ_КОМПЬЮТЕР;
                break;

            case ТипЭлементаДереваКаталогов.Диск:
                Узел.ImageIndex = ДИСК;
                break;

            case ТипЭлементаДереваКаталогов.CDДиск:
                Узел.ImageIndex = CD;
                break;

            case ТипЭлементаДереваКаталогов.Флопи:
                Узел.ImageIndex = ФЛОПИ;
                break;

            case ТипЭлементаДереваКаталогов.Каталог:
                Узел.ImageIndex = ПАПКА;
                break;

            case ТипЭлементаДереваКаталогов.Файл:
                Узел.ImageIndex = ФАЙЛ;
                break;
            }

            Узел.SelectImageIndex = Узел.ImageIndex;
        }
Exemple #2
0
        protected virtual TreeListNode НайтиУзелПоПути(string Путь, TreeListNode Корень)
        {
            ЭлементДереваКаталогов Элемент = (ЭлементДереваКаталогов)Корень.Tag;

            if (!Путь.Trim().ToUpper().StartsWith(Элемент.ПолноеНаименование.Trim().ToUpper()))
            {
                return(null);
            }

            if (Элемент.ПолноеНаименование.Trim().ToUpper() == Путь.Trim().ToUpper())
            {
                return(Корень);
            }

            if (Элемент.ПодчиненныеЭлементыЗагружены)
            {
                foreach (TreeListNode подУзел in Корень.Nodes)
                {
                    TreeListNode node = НайтиУзелПоПути(Путь, подУзел);
                    if (node != null)
                    {
                        return(node);
                    }
                }
                return(null);
            }
            else
            {
                return(null);
            }
        }
Exemple #3
0
        private void кнопкаСоздать_Click(object sender, EventArgs e)
        {
            ЭлементДереваКаталогов элемент = ТекущийЭлемент;
            TreeListNode           узел    = деревоКаталогов.FocusedNode;

            if ((элемент == null) || !элемент.ЯвляетсяКаталогом)
            {
                return;
            }

            string новоеИмя    = "";
            int    индексПапки = 0;
            string новыйПуть   = "";

            новоеИмя = ДиалогВводаСтроки.Показать("", "Введите имя нового каталога", "Новая папка");

            try
            {
                if (Directory.Exists(новыйПуть = Path.Combine(элемент.ПолноеНаименование, новоеИмя)))
                {
                    while (Directory.Exists(новыйПуть = Path.Combine(элемент.ПолноеНаименование, новоеИмя + "_" + индексПапки.ToString())))
                    {
                        индексПапки++;
                    }
                }

                Directory.CreateDirectory(новыйПуть);
                УстановитьТекущийЭлемент(новыйПуть);
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message, "Ошибка создания каталога", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
        }
Exemple #4
0
        private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ЭлементДереваКаталогов элемент = ТекущийЭлемент;
            TreeListNode           узел    = деревоКаталогов.FocusedNode;

            if ((элемент == null) || (элемент.одитель == null) || элемент.ЯвляетсяДиском || (элемент.ТипЭлемента == ТипЭлементаДереваКаталогов.МойКомпьютер))
            {
                System.Windows.Forms.MessageBox.Show("Удаление данного элемента запрещено.", "Удаление элемента", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                return;
            }

            try
            {
                if (System.Windows.Forms.MessageBox.Show("Удалить файл или каталог\n" + элемент.ПолноеНаименование, "Удаление элемента", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) != DialogResult.Yes)
                {
                    return;
                }

                if (элемент.ЯвляетсяКаталогом)
                {
                    Directory.Delete(элемент.ПолноеНаименование, true);
                }
                else if (элемент.ЯвляетсяФайлом)
                {
                    File.Delete(элемент.ПолноеНаименование);
                }

                элемент.одитель.ОбновитьСписокПодчиненныхЭлементов(выбиратьФайлы);
                УстановитьТекущийЭлемент(элемент.одитель.ПолноеНаименование);
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("Ошибка удаления элемента.\n" + ex.Message, "Удаление элемента", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
        }
Exemple #5
0
        protected virtual TreeListNode ДобавитьЭлементВДерево(ЭлементДереваКаталогов Элемент, TreeListNode одитель)
        {
            if (!ДобавлятьЭлементВДерево(Элемент, одитель))
            {
                return(null);
            }

            TreeListNode результат = деревоКаталогов.AppendNode(new string[] { Элемент.Наименование }, одитель);

            результат.Tag = Элемент;

            УстановитьИконкуЭлемента(Элемент, результат);

            if (Элемент.ПодчиненныеЭлементыЗагружены)
            {
                foreach (ЭлементДереваКаталогов подЭлемент in Элемент.ПолучитьСписокПодчиненныхЭлементов(выбиратьФайлы))
                {
                    ДобавитьЭлементВДерево(подЭлемент, результат);
                }
            }
            else if ((выбиратьФайлы && Элемент.СодержитФайлыИлиКаталоги) || Элемент.СодержитКаталоги)
            {
                деревоКаталогов.AppendNode(new object[] { new object() }, результат);
            }

            return(результат);
        }
Exemple #6
0
        public override void Execute(TreeListNode ТекущийУзел)
        {
            if (string.IsNullOrEmpty(путьПоиска))
            {
                return;
            }

            if (узел != null)
            {
                return;
            }

            if ((ТекущийУзел == null) || (ТекущийУзел.Tag == null) || !(ТекущийУзел.Tag is ЭлементДереваКаталогов))
            {
                return;
            }

            ЭлементДереваКаталогов элемент = (ЭлементДереваКаталогов)ТекущийУзел.Tag;

            if (элемент.ПолноеНаименование.Trim().ToUpper() == путьПоиска.Trim().ToUpper())
            {
                узел = ТекущийУзел;
                return;
            }
        }
Exemple #7
0
 protected virtual void СобытиеНажатияНаКнопкуОК(ЭлементДереваКаталогов Элемент, out bool ПродолжениеВозможно)
 {
     выбранныйКаталог    = "";
     ПродолжениеВозможно = false;
     if ((Элемент != null) && Элемент.ЯвляетсяКаталогом)
     {
         выбранныйКаталог    = Элемент.ПолноеНаименование;
         ПродолжениеВозможно = true;
     }
 }
Exemple #8
0
        private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ЭлементДереваКаталогов элемент = ТекущийЭлемент;

            if ((элемент == null) || (!элемент.ЯвляетсяКаталогом && !элемент.ЯвляетсяФайлом))
            {
                return;
            }
            ОткрытьЭлементВWin(элемент);
        }
Exemple #9
0
        protected virtual void УстановитьТекущийЭлемент(string Путь)
        {
            TreeListNode узел = null;

            if (Directory.Exists(КорневойКаталог))
            {
                if (КорневойКаталог.Trim().ToUpper() == Путь.Trim().ToUpper())
                {
                    деревоКаталогов.FocusedNode          = деревоКаталогов.Nodes[0];
                    деревоКаталогов.FocusedNode.Expanded = true;
                    return;
                }

                if (!Путь.Trim().ToUpper().StartsWith(КорневойКаталог.Trim().ToUpper()))
                {
                    return;
                }

                узел = деревоКаталогов.Nodes[0];
            }
            else
            {
                foreach (TreeListNode node in деревоКаталогов.Nodes[0].Nodes)
                {
                    ЭлементДереваКаталогов элемент = (ЭлементДереваКаталогов)node.Tag;
                    if (элемент.ПолноеНаименование.Trim().ToUpper() == Путь.Substring(0, 3).Trim().ToUpper())
                    {
                        узел = node;
                        break;
                    }
                }
            }

            if (узел != null)
            {
                TreeListNode           узелПути = null;
                ЭлементДереваКаталогов элемент  = (ЭлементДереваКаталогов)узел.Tag;
                элемент.ЗагрузитьПодчиненныйПуть(Путь, выбиратьФайлы);

                узел.Nodes.Clear();
                foreach (ЭлементДереваКаталогов подЭлемент in элемент.ПолучитьСписокПодчиненныхЭлементов(выбиратьФайлы))
                {
                    ДобавитьЭлементВДерево(подЭлемент, узел);
                }

                узелПути = НайтиУзелПоПути(Путь, узел);

                if (узелПути != null)
                {
                    деревоКаталогов.FocusedNode = узелПути;
                    узелПути.Expanded           = true;
                }
            }
        }
Exemple #10
0
 protected override void СобытиеНажатияНаКнопкуОК(ЭлементДереваКаталогов Элемент, out bool ПродолжениеВозможно)
 {
     ВыбранныйКаталог    = "";
     выбранныйФайл       = "";
     ПродолжениеВозможно = false;
     if ((Элемент != null) && Элемент.ЯвляетсяФайлом)
     {
         выбранныйФайл       = Элемент.ПолноеНаименование;
         ВыбранныйКаталог    = Path.GetDirectoryName(выбранныйФайл);
         ПродолжениеВозможно = true;
     }
 }
Exemple #11
0
        private void деревоКаталогов_BeforeExpand(object sender, DevExpress.XtraTreeList.BeforeExpandEventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            try
            {
                TreeListNode           текущийУзел = e.Node;
                ЭлементДереваКаталогов элемент     = (ЭлементДереваКаталогов)текущийУзел.Tag;

                try
                {
                    if (элемент.МожетСодержатьЭлементы && !элемент.ПодчиненныеЭлементыЗагружены)
                    {
                        текущийУзел.Nodes.Clear();

                        try
                        {
                            if (элемент.ТипЭлемента == ТипЭлементаДереваКаталогов.Каталог)
                            {
                                текущийУзел.ImageIndex       = ОТКРЫТАЯ_ПАПКА;
                                текущийУзел.SelectImageIndex = ОТКРЫТАЯ_ПАПКА;
                            }

                            foreach (ЭлементДереваКаталогов подЭлемент in элемент.ПолучитьСписокПодчиненныхЭлементов(выбиратьФайлы))
                            {
                                TreeListNode узел = ДобавитьЭлементВДерево(подЭлемент, текущийУзел);

                                if ((узел != null) && ((выбиратьФайлы && подЭлемент.СодержитФайлыИлиКаталоги) || подЭлемент.СодержитКаталоги))
                                {
                                    деревоКаталогов.AppendNode(new string[] { "" }, узел);
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                }
                catch
                {
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(string.Format("Во время построения дерева каталогов произошла ошибка. Ошибка: {0}.", err.Message), "БАРС II", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Exemple #12
0
        protected void ОткрытьЭлементВWin(ЭлементДереваКаталогов Элемент)
        {
            try
            {
                if (Элемент.ЯвляетсяКаталогом)
                {
                    Process.Start("explorer.exe", @Элемент.ПолноеНаименование);
                    return;
                }
                else if (Элемент.ЯвляетсяФайлом)
                {
                    string ext = Path.GetExtension(Элемент.ПолноеНаименование);

                    string openCommand = string.Empty;

                    using (RegistryKey classes_root = Registry.ClassesRoot)
                    {
                        string app_name = string.Empty;

                        RegistryKey ext_key = classes_root.OpenSubKey(ext);
                        app_name = ext_key.GetValue("").ToString();

                        if (!string.IsNullOrEmpty(app_name))
                        {
                            RegistryKey open_key = classes_root.OpenSubKey(app_name + @"\shell\open\command\");

                            openCommand = open_key.GetValue("").ToString();
                        }
                    }

                    if (!string.IsNullOrEmpty(openCommand))
                    {
                        string[] pars = openCommand.Split('\"');

                        string app       = pars[1];
                        string arguments = string.Format("{0} \"{1}\" ", pars[2], Элемент.ПолноеНаименование);

                        Process.Start(app, arguments);
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Exemple #13
0
        private void деревоКаталогов_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
        {
            деревоКаталогов.OptionsBehavior.Editable = false;

            ЭлементДереваКаталогов текущийЭлемент = ТекущийЭлемент;

            if (ИзменениеВыбранногоЭлемента != null)
            {
                ИзменениеВыбранногоЭлемента(текущийЭлемент);
            }

            bool ЭлементМожетБытьВыбран = true;

            if (ПроверкаНаВозможностьВыбораЭлемента != null)
            {
                ПроверкаНаВозможностьВыбораЭлемента(текущийЭлемент, out ЭлементМожетБытьВыбран);
            }
            кнопкаOK.Enabled = ЭлементМожетБытьВыбран;
        }
Exemple #14
0
        private void переименоватьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ЭлементДереваКаталогов элемент = ТекущийЭлемент;
            TreeListNode           узел    = деревоКаталогов.FocusedNode;

            if ((элемент == null) || (элемент.одитель == null) || элемент.ЯвляетсяДиском || (элемент.ТипЭлемента == ТипЭлементаДереваКаталогов.МойКомпьютер))
            {
                System.Windows.Forms.MessageBox.Show("Изменение имени данного элемента запрещено.", "Изменение имени элемента", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                return;
            }

            string выбранныйПуть = элемент.ПолноеНаименование;
            string наименование  = элемент.Наименование;
            string новоеИмя      = ДиалогВводаСтроки.Показать("Изменение имени элемента", "Введите новое имя элемента", наименование);

            if (string.IsNullOrEmpty(новоеИмя))
            {
                return;
            }

            элемент.Наименование = новоеИмя;

            УстановитьТекущийЭлемент(Path.Combine(элемент.одитель.ПолноеНаименование, новоеИмя));
        }
Exemple #15
0
        protected override bool ДобавлятьЭлементВДерево(ЭлементДереваКаталогов Элемент, TreeListNode одитель)
        {
            if (!Элемент.ЯвляетсяФайлом)
            {
                return(true);
            }
            else
            {
                if (string.IsNullOrEmpty(допустимыеРасширенияФайлов))
                {
                    return(true);
                }

                string[] расширения = допустимыеРасширенияФайлов.Trim().ToUpper().Split('|');
                foreach (string расширение in расширения)
                {
                    if (расширение == Элемент.КакФайл.Extension.Trim().ToUpper())
                    {
                        return(true);
                    }
                }
                return(false);
            }
        }
Exemple #16
0
 protected override void СобытиеПроверкиНаВозможностьВыбораЭлемента(ЭлементДереваКаталогов Элемент, out bool ЭлементМожетБытьВыбран)
 {
     ЭлементМожетБытьВыбран = ((Элемент != null) && Элемент.ЯвляетсяФайлом);
 }
Exemple #17
0
 public ЭлементДереваКаталогов(string Путь, ЭлементДереваКаталогов одитель) : this(Путь)
 {
     this.одитель = одитель;
 }
Exemple #18
0
 public ЭлементДереваКаталогов(DriveInfo Диск, ЭлементДереваКаталогов одитель) : this( Диск )
 {
     this.одитель = одитель;
 }
Exemple #19
0
 public ЭлементДереваКаталогов(Environment.SpecialFolder Каталог, ЭлементДереваКаталогов одитель) : this(Каталог)
 {
     this.одитель = одитель;
 }
Exemple #20
0
 public ЭлементДереваКаталогов(FileInfo Файл, ЭлементДереваКаталогов одитель) : this( Файл )
 {
     this.одитель = одитель;
 }
Exemple #21
0
 protected virtual void СобытиеИзмененияВыбранногоЭлемента(ЭлементДереваКаталогов Элемент)
 {
 }
Exemple #22
0
 protected virtual bool ДобавлятьЭлементВДерево(ЭлементДереваКаталогов Элемент, TreeListNode одитель)
 {
     return(true);
 }
Exemple #23
0
        private void ДиалогВыбораКаталога_Load(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(Заголовок))
                {
                    this.Text = Заголовок;
                }

                #region Устанавливаем базовые обработчики событий

                ИзменениеВыбранногоЭлемента         += new ИзменениеВыбранногоЭлемента(СобытиеИзмененияВыбранногоЭлемента);
                ПроверкаНаВозможностьВыбораЭлемента += new ЭлементМожетБытьВыбран(СобытиеПроверкиНаВозможностьВыбораЭлемента);
                НажатиеНаКнопкуОК += new ЭлементМожетБытьВыбран(СобытиеНажатияНаКнопкуОК);

                #endregion

                // Строю дерево каталогов
                деревоКаталогов.ClearNodes();
                деревоКаталогов.SelectImageList = imageList;

                ЭлементДереваКаталогов корневойЭлемент;
                TreeListNode           корень;

                if (Directory.Exists(КорневойКаталог))
                {
                    корневойЭлемент = new ЭлементДереваКаталогов(КорневойКаталог);
                }
                else
                {
                    корневойЭлемент = new ЭлементДереваКаталогов("Мой компьютер");
                }

                корень = ДобавитьЭлементВДерево(корневойЭлемент, null);

                if (корень == null)
                {
                    return;
                }

                if (корневойЭлемент.ТипЭлемента == ТипЭлементаДереваКаталогов.Каталог)
                {
                    корень.ImageIndex       = ОТКРЫТАЯ_ПАПКА;
                    корень.SelectImageIndex = ОТКРЫТАЯ_ПАПКА;
                }

                if (корневойЭлемент.СодержитФайлыИлиКаталоги)
                {
                    деревоКаталогов.AppendNode(new object[] { new object() }, корень);
                }

                деревоКаталогов.FocusedNode = корень;
                корень.Expanded             = true;

                if (!string.IsNullOrEmpty(выбранныйКаталог))
                {
                    if (File.Exists(выбранныйКаталог))
                    {
                        выбранныйКаталог = Path.GetDirectoryName(выбранныйКаталог);
                    }

                    try
                    {
                        УстановитьТекущийЭлемент(выбранныйКаталог);
                    }
                    finally
                    {
                        выбранныйКаталог = string.Empty;
                    }
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(string.Format("Во время построения дерева каталогов произошла ошибка. Ошибка: {0}.", err.Message), "БАРС II", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }
Exemple #24
0
 public ЭлементДереваКаталогов(DirectoryInfo Каталог, ЭлементДереваКаталогов одитель) : this(Каталог)
 {
     this.одитель = одитель;
 }