Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 16:23   #1
Tezkatlipoka
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 1
Смех Открыть выбранный в listView файл

Всем привет. Нужна помощь.
В форме windows я создал аналог проводника с помощью компонентов treeview и listview.
В treeview отображается дерево папок, входящих в папку D:\\Data\, при раскрытии которого в listview отображаются входящие в эту папку папки и файлы.
Но вот незадача - не могу открыть выбранный по щелчку мыши файл.
Вот код программы и скрин:



не понял, как код вставить, пусть будет так:

Код HTML:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            PopulateTreeView();

        }

       
        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void PopulateTreeView()
        {
            TreeNode rootNode;

            DirectoryInfo info = new DirectoryInfo(@"D:\Data\");
            if (info.Exists)
            {
                rootNode = new TreeNode(info.Name);
                rootNode.Tag = info;
                GetDirectories(info.GetDirectories(), rootNode);
                treeView1.Nodes.Add(rootNode);
            }
        }

        private void GetDirectories(DirectoryInfo[] subDirs,
            TreeNode nodeToAddTo)
        {
            TreeNode aNode;
            DirectoryInfo[] subSubDirs;
            foreach (DirectoryInfo subDir in subDirs)
            {
                aNode = new TreeNode(subDir.Name, 0, 0);
                aNode.Tag = subDir;
                aNode.ImageKey = "folder";
                subSubDirs = subDir.GetDirectories();
                if (subSubDirs.Length != 0)
                {
                    GetDirectories(subSubDirs, aNode);
                }
                nodeToAddTo.Nodes.Add(aNode);
            }
        }

        void treeView1_NodeMouseClick(object sender,
            TreeNodeMouseClickEventArgs e)
        {
            TreeNode newSelected = e.Node;
            listView1.Items.Clear();
            DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;
            ListViewItem.ListViewSubItem[] subItems;
            ListViewItem item = null;

            foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories())
            {
                item = new ListViewItem(dir.Name, 0);
                subItems = new ListViewItem.ListViewSubItem[]
                    {new ListViewItem.ListViewSubItem(item, "Directory"), 
                     new ListViewItem.ListViewSubItem(item, 
						dir.LastAccessTime.ToShortDateString())};
                item.SubItems.AddRange(subItems);
                listView1.Items.Add(item);
            }
            foreach (FileInfo file in nodeDirInfo.GetFiles())
            {
                item = new ListViewItem(file.Name, 1);
                subItems = new ListViewItem.ListViewSubItem[]
                    { new ListViewItem.ListViewSubItem(item, "File"), 
                     new ListViewItem.ListViewSubItem(item, 
						file.LastAccessTime.ToShortDateString())};

                item.SubItems.AddRange(subItems);
                listView1.Items.Add(item);
            }

            listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
        }

        private void treeView1_NodeMouseClick_1(object sender, TreeNodeMouseClickEventArgs e)
        {
            this.treeView1.NodeMouseClick +=
                new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
        }

        private void listView1_MouseClick(object sender, MouseEventArgs e)
        {
            //Process.Start(@"D:\\Data\dfg.docx");
            //Process.Start(?????????);
            
        }

        private void listView1_ItemActivate(object sender, EventArgs e)
        {
          
        }


    }
}
Как мы видим, в конце вышеуказанного кода есть событие клик по listview:

private void listView1_MouseClick(object sender, MouseEventArgs e)
{
Process.Start(@"D:\\Data\dfg.docx") ;
}

Этот код работает.

Но он открывает конкретный файл, а мне надо, чтобы любой открывался.
Уже весь инет перелопатил - так и не нашел решение.
Файлы будут обновляться постоянно и меняться и добавляться и удаляться, всё это будет отображаться в моём проводнике. Мне единственное надо - научиться эти файлы запускать.
Вот
Tezkatlipoka вне форума Ответить с цитированием
Старый 10.12.2012, 18:04   #2
Dmitriy__
Новичок
Джуниор
 
Регистрация: 13.05.2011
Сообщений: 2
По умолчанию

Если я правильно понял, вам необходим путь файла, для вызова метода Process.Start. Можете попробовать хранить расположение файлов в поле класса, а имя файла получить из свойства SelectedItems.

Код:
private void listView1_MouseClick(Object sender, MouseEventArgs e)
{
    // path - поле класса, в котором хранится текущее расположение
    String fullPath = path + "\\" + listView1.SelectedItems[0].Name;
    Process.Start(fullPath);
}
Dmitriy__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выбор файла из combobox и добавление записи в выбранный файл Кристинка89 Общие вопросы Delphi 3 18.04.2012 15:15
мини Файл Браузер, не открывается файл выбранный в ListView Paul_man WPF, UWP, WinRT, XAML 0 01.03.2012 11:59
Нужно при двойном клике на строку listView открыть другую форму и передать даные в текстбоксы из txt vitiok1 C# (си шарп) 5 17.02.2012 19:16
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? Ник Харди Microsoft Office Excel 7 30.01.2012 18:47
Как по нажатию на Button открыть документ, выбранный в OpenDialog Stranger333 Общие вопросы Delphi 4 12.11.2009 14:27