Страница: 1 | 2 |
Вопрос: Помогите с меню!
Добавлено: 22.01.08 22:00
Автор вопроса: Александр
Ответы
Всего ответов: 22
Номер ответа: 16
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #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. По все видимости я ошибалась, если мне это ставится в упрек.
Мне непонятно другое. Какое имеет отношение моя орфография к вопросу топику? Я что попала на филологический форум? Или программисты на VB отличаются повешенной чувствительность к орфографии? Либо это следует расценивать как желание рисануться в топике и заработать пару лишних звезд или рейтинга? Если это так, то тогда все становится на свои места, по теме вопроса - ноль, зато ищем ошибки в орфографии. Старик, ты вообще кто по жизни, программист или филолог? Если программист, то я бы с бОльшей радостью выслушала бы критику по моему коду, либо взглянула на Ваш вариант ответа, а за критикой по орфографии я обращусь на другой форум. Избавьте меня плиз от Ваших замечаний на этот счет в дальнейшем.
vito
Спасибо за увлекательный рассказ о внутренней реализации сборщика мусора, за сравнительный анализ NET vs Java. Все очень познавательно, толково и понятно изложено!!
Номер ответа: 18
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #18
Добавлено: 23.01.08 05:45
ника
Не обращай внимания. Здесь по прежнему с пеной у рта доказывают, что 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("irectory '{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
2 ника
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 пишу! . И это радует )))