Вопрос: Помогите с меню! | Добавлено: 22.01.08 22:00 |
Автор вопроса: ![]() |
Здравствуйте!
Имеется такой фрагмент кода: Dim im As New IO.DirectoryInfo(path & "\data\music\") Dim im1 As IO.FileInfo() = im.GetFiles() Dim ifm As IO.FileInfo For Each ifm In im1 MenuItem8.MenuItems.Add(ifm.ToString) Next Т.е. как видите - в меню добавляются пункты в соответствии с файлами в определенной папке. Теперь вопрос - как запустить из созданного меню эти файлы? Заранее спасибо!) |
Ответы | Всего ответов: 22 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 22.01.08 22:15 |
ShellExecute(..., path & "\data\music\" & ifm.ToString, ...) |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 20 Ответов: 44 |
Профиль | Цитата | #2 | Добавлено: 22.01.08 22:31 |
...помоему я немного неправильно сформулировал вопрос..
Мне нужно событие, по которому будет исполняться открытие файла, т.е. как узнать имя созданного меню и по клику по этому меню уже открывался файл - например ...menuitem(неизвестное значение)_click... |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 22.01.08 22:42 |
там по индексу будет... menuitem_click(Index as integer)
вроде так |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 20 Ответов: 44 |
Профиль | Цитата | #4 | Добавлено: 22.01.08 23:09 |
А можно весь пример кода, а то я что-то недогоняю))) |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 22.01.08 23:11 |
У меня не установлена ни одна студия, держащая дотнет ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() Вопросов: 1 Ответов: 111 ![]() |
Профиль | Цитата | #6 | Добавлено: 22.01.08 23:20 |
Executioner
Какой menuitem_click(Index as integer)???? ты чего несёшь??? Александр, за такой код надо сразу пальцы ломать, и пока они заживать будут сиди и читай мануалы!! Зачем ты юзаешь DirectoryInfo, FileInfo когда тебе достаточно воспользоваться перегруженным методом и получить строковый массив в чистом виде! А потом на всех форумах орут, что NET - тормозит.. (((( Вот из за такого кода он и тормозит! Ты в качестве пункта меню добавляешь ПОЛНЫЙ путь к файлу, а если путь будет так символов на 200, и файлов там будет штук 50???? Нехилое у тебя меню выйдет! Старик, тебя где так кодить учили? Парни, напишите ему "взрослый" код через AddHandler, а то неохота из за этого VB ставить, а CS он явно не поймет, а смотреть на его код - слезы наворачиваются ![]() |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 22.01.08 23:28 |
Я сказал как будет в VB6, насчет дотнета я не был уверен, так как не кодю на нем. Только предположил. Меня спросили - я ответил. Мне не важно сколько там будет файлов и какой длины будет путь ![]() ты чего несёшь???
Не грубите, пожалуйста, я Вам не грубил. Я миллион раз говорил, что у нас цивилизованный форум ![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 20 Ответов: 44 |
Профиль | Цитата | #8 | Добавлено: 22.01.08 23:50 |
Александр, за такой код надо сразу пальцы ломать, и пока они заживать будут сиди и читай мануалы!!
Присоединюсь к Executioner насчет просьбы не грубить. Пункт меню - это не ПОЛНЫЙ путь к файлу, а только лишь название файла. Лучше бы предложили что-нибудь стоящее, чем всем хамить! |
Номер ответа: 9 Автор ответа: ![]() ![]() Вопросов: 1 Ответов: 111 ![]() |
Профиль | Цитата | #9 | Добавлено: 22.01.08 23:53 |
Я сказал как будет в VB6, насчет дотнета я не был уверен, так как не кодю на нем
Во первых. Вы даже словом не обмолвились, о том что ваш код для VB6. Во вторых. Зачем ему нужен код на VB6 когда речь идет о NET!? А он наверняка пытается запустить Ваш код в своем проекте. Почему в таком случае не дать ему код на VBA или дельфях каких нибудь!? Пусть попробует, вдруг он в НЕТ запустится.. В третьих. Запускать файл в НЕТ через ShellExecute - это, мягко говоря, извращение! В четвертых. На цивилизованных форумах(имхо) приводят корректный код на соответствующем языке по возможности с комментариями. И не зная возможностей платформы не приводят код из другого языка, который совершенно неуместен в контексте вопроса. В пятых. Если мои слова Вас обидели или задели - приношу извенения. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 23.01.08 00:03 |
Смею сообщить, что если правильно указать имя менюшки, то мой код, вероятно, заработает и в дотнете. Не уверен, но все же, насколько я знаю, обработчики событий в vb.net и vb6 очень похожи... |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 23 Ответов: 879 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 23.01.08 00:47 |
Александр
Твое решение с меню, никуда не годится. Исползуй tree. Это и красивее и логичнее и удобнее. Хотя бы свернуть можно ![]() И читаем по поводу делегатов и обработчиков событий в НЕТ. Executioner vb.net и vb6 очень похожи...
Неа ![]() ![]() ника Грамотный разгром ![]() Только вот беда, нетчики в основном на шарпе сидят ![]() //-------- Ты я вижу фанатка ![]() А потом на всех форумах орут, что NET - тормозит.. ((((
Ну да тормозит ![]() ![]() Нельзя увы, даже на сегодняшнем этапе создать универсальную модель управления памятью. А потому автколлектор, перекушав недозрелого ООП сильно .... капризничает ![]() |
Номер ответа: 12 Автор ответа: ![]() ![]() Вопросов: 1 Ответов: 111 ![]() |
Профиль | Цитата | #12 | Добавлено: 23.01.08 01:57 |
Executioner:
Смею сообщить, что если правильно указать имя менюшки, то мой код, вероятно, заработает и в дотнете. Не уверен, но все же, насколько я знаю, обработчики событий в vb.net и vb6 очень похожи... Глубоко заблуждаетесь...
vito: Полность согласна. НЕТ тоже не без недостатков. сильно .... капризничает
![]() Прямо скажем - очень деликатно подобрано слово ))) Александр: vito прав. Использование TreeView в данной ситуации было бы лучшим решением. Но раз тебе так хочется через меню, то вот набросок. На VB я думаю и сам сможешь перевести. (код для цивилизованного форума ![]() using System; using System.Collections; using System.Diagnostics; using System.IO; using System.Windows.Forms; namespace VBNetSample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { /** * Test addToFileMenuItems void * * Ищем в директории "Мои документы" все текстовые файлы * * Предварительно должен быть создан элемент меню с именем stripFiles */ string m_dirPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); addToFileMenuItems(stripFiles, m_dirPath, "*.txt", SearchOption.TopDirectoryOnly); } /// <summary> /// /// </summary> /// <see cref="http://vbnet.ru/forum/show.aspx?id=159547&tolastpage=true"/> /// <param name="parent">Сыылка на родительский элемент меню</param> /// <param name="path">Путь к папке с нужными файлами</param> /// <param name="searchPattern">Маска поиска</param> /// <param name="searchOption">Параметры поиска</param> private void addToFileMenuItems(ToolStripMenuItem parent, string path, string searchPattern, SearchOption searchOption) { string[] m_files = null; /** Проверка входных аргументов */ if (parent == null) throw new ArgumentNullException("parent" ![]() if (string.IsNullOrEmpty(path)) throw new ArgumentNullException("path", "Path to directory is null or empty" ![]() if (!Directory.Exists(path)) throw new DirectoryNotFoundException(string.Format(" ![]() try { /** Получаем массив путей */ m_files = Directory.GetFiles(path, searchPattern, searchOption); } catch (Exception ex) { throw ex; } /** Очищаем родительскую коллекцию */ parent.DropDownItems.Clear(); /** Проверяем что полученный массив не пустой*/ if (m_files != null && m_files.Length != 0) { /** Сортируем массив */ if (m_files.Length != 1) Array.Sort(m_files, new CaseInsensitiveComparer()); foreach (string m_file in m_files) { /** Создаем новый элемент меню*/ ToolStripMenuItem m_stripItem = new ToolStripMenuItem(Path.GetFileName(m_file)); /** Запоминаем полный путь к файлу */ m_stripItem.Tag = m_file; /** Добавляем картинку файла */ m_stripItem.Image = System.Drawing.Icon.ExtractAssociatedIcon(m_file).ToBitmap(); /** Добавляем обработчик события Click */ m_stripItem.Click += new EventHandler(stripOpenFileClick); /** Добавляем новый элемент к родительскому меню */ parent.DropDownItems.Add(m_stripItem); } } /** Блокируем родительский элемент на тот случай, если он пустой */ parent.Enabled = (parent.DropDownItems.Count != 0); } /// <summary> /// Strip OpenFile nenu items click handler /// </summary> /// <param name="sender">Элемент меню по которому кликнули</param> /// <param name="e"></param> private void stripOpenFileClick(Object sender, EventArgs e) { /** Получаем элемент по которому кликнули */ ToolStripMenuItem m_stripItem = (ToolStripMenuItem)sender; /** Запускаем приложение, ассоциированное с этим файлом */ Process.Start((string)m_stripItem.Tag); } } } |
Номер ответа: 13 Автор ответа: ![]() ![]() Вопросов: 1 Ответов: 111 ![]() |
Профиль | Цитата | #13 | Добавлено: 23.01.08 02:00 |
Мда... Не ожидала... (((
Скажите, а у Вас ,случайно, нет знакомых программистов, чтоб они сделали для форума нормальную подсветку кода? |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #14 | Добавлено: 23.01.08 03:03 |
форум по басику, а ты С# запостила.. Подстветку для Brainfuck'a не хочешь? |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #15 | Добавлено: 23.01.08 03:05 |
p.s. страдает русский язык от безграмотности. Когда уже люди поймут, что "вас" следует писать с маленькой буквы? Правда ника? |
|