Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Помогите с меню! Добавлено: 22.01.08 22:00  

Автор вопроса:  Александр

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 16
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #16
Добавлено: 23.01.08 03:13
ника
Скажите, а у Вас ,случайно, нет знакомых программистов, чтоб они сделали для форума нормальную подсветку кода?

Была тут кардинальная перестройка. Эйфория! НЕТ в два щелчка! Подсветка кода обещалась, чуть ли не всем языкам :)
Но увы:)
Впрочем спросить надо Павла. Он этим долго занимался, но потом как то... ушел в тень.:)

Прямо скажем - очень деликатно подобрано слово )))

Да нет ну почему? Это проблема и Джавы.
Самое забавное, что сборка мусора, наиболее тормозящая процедура, реализуется в этих виртуалках аналогично.
Пока хип не исчерпан (при условии, что мы принудитеьно не убираем объекты, но тогда зачем вся эта муть?), все ресурсы (и нужные и нет) будут держаться в хипе и лишь потом, начинается очистка.
Это позволяет добиться и большего быстродействия, и плавности работы кода.
//------
К чему все это? Не стоит писать на подобных технологиях ресурсоемкие приложения, например для работы с графикой (хотя иногда приходится).
Каждому свое. А в своей нише эти технологии очень перспективны. Проще говоря если нет нужды вызывать коллектор - это оно:)
Вот если бы хип был анлимит:)
//-------
У НЕТ есть больши недостатки. Она до сих пор уступает Джаве в управлении ресурсами, потому как изначально строилась (в разрезе GUI и не только), как надстройка над нативе апи. Учитывая низкую производительность самой операционки, МС пыталась сделать невозможное.
А Джава изначально создавалась как язык для кодирования микроустройств, с очень ограниченными ресурсами. И модель у них реализована, значительно грамотнее (хотя и проще). Но принципиальных различий нет.
//----------

Собственно, на сегодняшний день различия между промежуточным кодом и родным, как раз в управлении ресурсами. Скорости при сопоставимх задачах примерно одинаковы.

ника

Код хорош. Но нужно бы топикстартеру почитать терию. И переложить не сможет, а еслт и сможет то толку мало.

Ответить

Номер ответа: 17
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #17 Добавлено: 23.01.08 04:44
HACKER
форум по басику, а ты С# запостила

И что с того? Я предупреждала, что у меня только CS стоит, но топик стартер настоял, чтоб я что то дельное предложила. (имхо) Это лучше, чем ShellExecute и все вышенаписанные примеры не имеющие никакого отношения к НЕТ. А если у Вас на форуме недолюбливают CS, то так и напишите в правилах, что все кто пишет на CS - идет лесом! Тут реальные пацаны на VB6|VBA|VB.NET кодят! Тогда я буду знать куда мне пойти. А так я руководствовалась названием домена vbnet который, как мне казалось, имеет предпочтнение к vb, но в тоже время поддерживает все "наречия" net. По все видимости я ошибалась, если мне это ставится в упрек.

Подстветку для Brainfuck'a не хочешь?
Нет, спасибо.. для начала попробуйте для CS сделать.

страдает русский язык от безграмотности. Когда уже люди поймут, что "вас" следует писать с маленькой буквы? Правда ника?
Правда. Но в данном контексте я использовала большую букву для подчеркнуто-уважительного обращения к человеку. Надеюсь, ЭТО понятно?
Мне непонятно другое. Какое имеет отношение моя орфография к вопросу топику? Я что попала на филологический форум? Или программисты на VB отличаются повешенной чувствительность к орфографии? Либо это следует расценивать как желание рисануться в топике и заработать пару лишних звезд или рейтинга? Если это так, то тогда все становится на свои места, по теме вопроса - ноль, зато ищем ошибки в орфографии. Старик, ты вообще кто по жизни, программист или филолог? Если программист, то я бы с бОльшей радостью выслушала бы критику по моему коду, либо взглянула на Ваш вариант ответа, а за критикой по орфографии я обращусь на другой форум. Избавьте меня плиз от Ваших замечаний на этот счет в дальнейшем.

vito
Спасибо за увлекательный рассказ о внутренней реализации сборщика мусора, за сравнительный анализ NET vs Java. Все очень познавательно, толково и понятно изложено!! :-)

Код хорош. Но нужно бы топикстартеру почитать терию. И переложить не сможет, а еслт и сможет то толку мало.
Тогда увы, тут я уже вряд ли чем смогу помочь. Пусть обращается к местным "филологам" за помощью в переводе кода. Я, по возможности, расставила комментарии для большей ясности кода, для него осталось дело за малым - понять как это работает.

Ответить

Номер ответа: 18
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #18
Добавлено: 23.01.08 05:45
ника

А если у Вас на форуме недолюбливают CS, то так и напишите в правилах, что все кто пишет на CS - идет лесом! Тут реальные пацаны на VB6|VBA|VB.NET кодят!


Не обращай внимания. Здесь по прежнему с пеной у рта доказывают, что 6 самый рульный язык.
Из - за таких "падцанов" форум лишился очень НЕТ кодеров. Им просто стало скучно.
Не не С# недолюбливают, а все си подобные языки.
Но впрочем это масса. Те кто остался, как минимум понимают, а обычно и пишут на шарпе.
Хотя таких очень не много.

Эй Хацкер, ты чего? Все на 6 сидишь. Или я наблюдал потуги перейти на нет? Не выходит каменный цветок?
Если ты еще не знаешь, то НЕТ открыта для всех языков и верований:)
Флудеров у нас хватает, пальцем уазывать не буду.
А вот кодеров, почти не осталось.
Поэтому нечего наезжать на нику. Возможно она и высказалась несколько эмоционально, но никого не оскорбила.

Ответить

Номер ответа: 19
Автор ответа:
 Александр



Вопросов: 20
Ответов: 44
 Профиль | | #19 Добавлено: 23.01.08 10:11
Александр:
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(";Directory '{0}' not found.", path));
             
            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);
        }
    }
}

Спасибо за пример - попробую перевести на VB.NET

Ответить

Номер ответа: 20
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #20 Добавлено: 23.01.08 10:43
2 Hacker

Подстветку


p.s. страдает русский язык от безграмотности

:)

2 ника

А так я руководствовалась названием домена vbnet который, как мне казалось, имеет предпочтнение к vb, но в тоже время поддерживает все "наречия" net


vbnet.ru был зарегистрирован, ещё тогда, когда .NET не было и в мыслях создателей, не то что в проекте.

В основном, здесь пользуются вставками кода на бейсике. CS и другие языки большая редкость. Не охото перегружать тег code.

Я что попала на филологический форум?


Да. Иногда. Впрочем, как и везде.

Ответить

Номер ответа: 21
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #21 Добавлено: 28.01.08 14:35
Ника, респект!

Редко вижу на форуме новичков которые пишут что-то осмысленное.
А тут вообще до глубины тронуло...

Ответить

Номер ответа: 22
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #22 Добавлено: 28.01.08 22:51
Steel Brand:
Спасибо за комплимент! :-)
Значит тут не только vito способен понять C#, оказывается есть еще и другие! и значит я тут не одна, как дура, на CS пишу! :-). И это радует )))

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам