Аннотация:
Данная статья, являясь самостоятельным и законченным документом, в тоже время является и качественным развитием статьи опубликованной год назад: Новое в WinForms 2.0 Автор этих строк постарался “копать” не столько вширь, сколько вглубь. Поэтому новые контролы/фичи исследованы достаточно детально и по каждому разделу имеется довольно серьезная demo-winform, запустив которую легко наглядно увидеть “а как это оно на самом деле”. Так же упомянуты пара-тройка особенностей появившихся только в beta2 и отсутствующих в ранних версиях. Статья нацелена на аудиторию, имеющую твердый опыт работы с WinForms 1.0/1.1 и желающих сделать “быстрый старт” по направлению к WinForms 2.0.
Автоматическую публикацию можно делать и на сервере требующем авторизацию!
Например на nm.ru можно помещать файлы публикации по ftp указав username и пароль в строке размещение(publishing location): ftp://AccountName.nm.ru:password@ftp.nm.ru/ProjectName/
Мелочь, а приятно
Здравствуйте, Ryf, Вы писали:
Ryf>Здравствуйте, Щербунов Нейл, Вы писали:
Ryf>По разделу о ClickOnce, об обновлении. Немножко запутано написано про статусы публикации Include и DataFile,
Да они и сделаны... немножко так, что не знаешь какие слова подобрать, что бы описать их поведение... У меня лучше не получилось. Это по форме. А по сути — я пока противоречий не вижу, см. ниже.
Ryf>вроде как по-любому обновляются только измененые файлы. По крайней мере, не выставляя никаких атрибутов в диалоговом окне ApplicationFiles, в логах IIS видно, что забирается только часть файлов приложения, те, которые были изменены.
Возьмем факты:
1. Publish Status у файлов сборки может быть: Include, Data File(далее для краткости этот статус обозначаем как DF), Exclude, Prerequisite.
2. С двумя последними все ясно и они не интересны...
3. Требуется понять разницу между Include и DF
4. Абсолютно неоспоримая разница — первые кладутся в каталог приложения, вторые — в каталог данных.
Теперь идут хотя и проверенные на практике, но уже теории касаемые поведения Include и DF файлов на этапе апдейта оно же обновление:
1. Грузить не изменившиеся со старой версии файлы с сервера глупо.
2. Если файл НЕ большой — быстрее его сгрузить, нежели искать ответ на вопрос "изменился ли файл?".
3. Для быстрой и не напряжной проверки факта изменения содержимого файла хорошо покатит хэш.
4. Центральный момент разговора: проверяется ли хеш для IncludeиDF ИЛИ только для DF? Мои эксперименты выводят в качестве ответа второй вариант. А вот что говорит МСДН:
ClickOnce will replace the older version of the file with the newer version of the server if a data file(! а не any file, или просто file) has a different hash value in the old version of the application as in the new version.
Т.е. вроде как подтверждает практику.
5. Уже чистая дедукция: Include-файлы(читай исполняемые файлы) слишком важны. Кроме того, по "толщине"(читай времени закачки) Include-файлы(почти всегда) хорошо уступают DF файлам. Ситуации же когда апдейт содержит только изменения в ресурсах(а код идентичен предыдущей версии) редки черезвычайно. Отсюда — Include-файлы почти всегда должны быть загружены в виду их более чем вероятной изменчивости(это раз) и желательны для загрузки, даже подчас избыточной, в виду их важности(это два).
Здравствуйте, Smarty, Вы писали:
S>Здравствуйте, Ryf, Вы писали:
Ryf>>Здравствуйте, Щербунов Нейл, Вы писали:
Ryf>>По разделу о ClickOnce, об обновлении. Немножко запутано написано про статусы публикации Include и DataFile, S>Да они и сделаны... немножко так, что не знаешь какие слова подобрать, что бы описать их поведение... У меня лучше не получилось. Это по форме. А по сути — я пока противоречий не вижу, см. ниже.
Ryf>>вроде как по-любому обновляются только измененые файлы. По крайней мере, не выставляя никаких атрибутов в диалоговом окне ApplicationFiles, в логах IIS видно, что забирается только часть файлов приложения, те, которые были изменены. S>Возьмем факты:
S>1. Publish Status у файлов сборки может быть: Include, Data File(далее для краткости этот статус обозначаем как DF), Exclude, Prerequisite. S>2. С двумя последними все ясно и они не интересны... S>3. Требуется понять разницу между Include и DF S>4. Абсолютно неоспоримая разница — первые кладутся в каталог приложения, вторые — в каталог данных.
S>Теперь идут хотя и проверенные на практике, но уже теории касаемые поведения Include и DF файлов на этапе апдейта оно же обновление:
S>1. Грузить не изменившиеся со старой версии файлы с сервера глупо. S>2. Если файл НЕ большой — быстрее его сгрузить, нежели искать ответ на вопрос "изменился ли файл?". S>3. Для быстрой и не напряжной проверки факта изменения содержимого файла хорошо покатит хэш. S>4. Центральный момент разговора: проверяется ли хеш для IncludeиDF ИЛИ только для DF? Мои эксперименты выводят в качестве ответа второй вариант. А вот что говорит МСДН: S>
ClickOnce will replace the older version of the file with the newer version of the server if a data file(! а не any file, или просто file) has a different hash value in the old version of the application as in the new version.
Т.е. вроде как подтверждает практику. S>5. Уже чистая дедукция: Include-файлы(читай исполняемые файлы) слишком важны. Кроме того, по "толщине"(читай времени закачки) Include-файлы(почти всегда) хорошо уступают DF файлам. Ситуации же когда апдейт содержит только изменения в ресурсах(а код идентичен предыдущей версии) редки черезвычайно. Отсюда — Include-файлы почти всегда должны быть загружены в виду их более чем вероятной изменчивости(это раз) и желательны для загрузки, даже подчас избыточной, в виду их важности(это два).
S>Вот такие мысли...
Здравствуйте. Прочитав вашу статью, начал прикручивать ClickOnce к своему проекту... Исходя из статьи, шаблоны, файлы отчетов и т.п.(около 10мб) были помечены, как дата файлы. Во время экспериментов, я заметил, что дата файлы скачиваются в любом случае!!! И записываются в папку соотв-ую названию манифеста приложения. Но в папку data — попадают старые файлы (смотрел по дате изменения) если они не менялись
Решил изучить вопрос досконально...
МСДН: http://msdn2.microsoft.com/en-us/library/ms404267.aspx
File patching does not work for files that are marked as data and stored in the data directory. These are always downloaded regardless of the file's hash signature.
ClickOnce will replace the older version of the file with the newer version of the server if a data file has a different hash value in the old version of the application as in the new version. Also, if the earlier version of the application created a new file that has the same name as a file included in the new version's deployment, ClickOnce will overwrite the old version's file with the new file. In both cases, the old files will be included in a subdirectory inside the data directory named .pre, so that the application can still access the old data for migration purposes.
Чутка подробнее:
Папка данных подразумевает под собой действительно папку данных Куда/от куда приложение может свободно писать и считывать. Там может лежать хмл, с которым работает приложение и активно его изменяет, файлы б.д. скул сервера и т.д. Сделано для удобства работы приложений в отключенном(от БД) режиме и последующего мерджа.
Пример:
1 релиз приложения с ним поступает файл б.д. помеченный как дата файл.
Пользователь работает с ним — добавляет некие данные.
2 релиз приложения с ним поступает файл б.д. (не важно изменился ли он со времени 1-го релиза) — файл б.д. скачивается в любом случае, далее локально сравнивается хеш старого и нового файла, если они совпадают, то используется старый файл, в противном случае — новый, а старый сохраняется как *.pre. Далее, после запуска новой версии, мы должны позаботится о мердже новой и старых версий(чтобы данные, которые добавлял клиент не пропали)...
Для распространения приложений, все файлы, которые пользователь не может/не должен никак менять, или эти изменения не должны мегрировать от версии к версии, должны помечаться как Include, ибо в этом случае они скачиваются только тогда, когда хеш изменился...
Здравствуйте, Smarty, Вы писали:
S>Вряд ли. Я ж не писатель по призванию, а практикующий хирург... Но может по 2-му дата-гриду пару заметок и набросаю... S>Но по любому — СПАСИБО за высокие оценки, приятно!
Тебе спасибо. Как грится... пиши еще.
... << RSDN@Home 1.2.0 alpha rev. 628>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
"упомяну о событии Cancel (тип bool)"
Не очень понял, как событие может быть типа bool? Наверное, имеется в виду свойство типа bool у соответствующих EventArgs?
Ещё хочу отметить, что цитаты из MSDN приводятся как на русском так и на английском языке. Хорошо бы придерживаться единообразия в этом вопросе (я бы предпочёл текст на английском).
Ну и орфографические ошибочки были, я на них Ctrl+Enter покликал. Исправьте их, пожалуйста.
В целом статья очень понрачилась, спасибо за труд!
Здравствуйте, Smarty, Вы писали:
V>>причем публиковать можно только управляемые приложения, S>Не совсем — можно таким образом деплоить Registration-Free COM компоненты. Хотя можно и счесть это просто экзотикой. Так что ответ на эту часть вопроса... не однозначный, но скорее все же да — только управляемые. Кроме того, как следует из предыдущего абзаца, ClickOnce(сам, движок т.е.) — часть фреймворка, а если есть фреймворк — чего уж там неуправляемыми приложениями морочиться.
Ага, похоже можно и в ручную публикации создавать, но удовольствие это похоже не из приятных <span class='lineQuote level2'>>></span>, а FW все равно клиенту ставить придется.
V>>Как насчет развертывания не-ехе-приложений (библиотек, плагинов, других документов)? S>Выходной продукт проекта(exe/dll файл) однозначно включается в публикацию и отменить это нельзя. А вот "пристегнуть" к этому выходному файлу можно что угодно — другие dll,txt,doc,pdf,jpg,....
Если выходной продукт dll, то не понятно как будет задействован ClickOnce после установки. Я имею ввиду то, что весь движок ClickOnce завязан на регистрацию расширения .application:
C:\Documents and Settings\vhonest>assoc .application
.application=Application.Manifest
C:\Documents and Settings\vhonest>ftype Application.Manifest
Application.Manifest=rundll32.exe dfshim.dll,ShOpenVerbApplication %1
И в случае, если "выходной продукт" dll + файлы, например плагин, фокус с регистрацией расширения .application уже не пройдет. А как по другому задействовать автоматические (непрограммное) обновления не понятно
Кстати закладка Publish для не-exe проектов напрочь отсутствует. И надо признать это снимает все лишние вопросы
ЩН>Авторы: ЩН> Щербунов Нейл
ЩН>Аннотация: ЩН>Данная статья, являясь самостоятельным и законченным документом, в тоже время является и качественным развитием статьи опубликованной год назад: Новое в WinForms 2.0 Автор этих строк постарался “копать” не столько вширь, сколько вглубь. Поэтому новые контролы/фичи исследованы достаточно детально и по каждому разделу имеется довольно серьезная demo-winform, запустив которую легко наглядно увидеть “а как это оно на самом деле”. Так же упомянуты пара-тройка особенностей появившихся только в beta2 и отсутствующих в ранних версиях. Статья нацелена на аудиторию, имеющую твердый опыт работы с WinForms 1.0/1.1 и желающих сделать “быстрый старт” по направлению к WinForms 2.0.
1) вопрос на сколько я понял gdiplus.dll не поменялась в NET 2.0 а прорисовка стала быстрее за счет чего оптимизации раюоты System.Drawing.Dll ???
2) где можно найти функции получения серийного номера HDD ???
Здравствуйте, <Аноним>, Вы писали:
А>1) вопрос на сколько я понял gdiplus.dll не поменялась в NET 2.0 а прорисовка стала быстрее за счет чего оптимизации раюоты System.Drawing.Dll ???
Увязывать версию gdiplus.dll с версией фрейма просто некорректно. Данная библиотека НЕ является частью фреймворка, а скорее(начиная с WinXP) — частью системы. Например WinXP SP2 будет иметь иную ее версию, нежели XP-система без этого пака. Что касается скорости — чисто субъективно 2ка стала пошустрее. Никаких точных замеров/засечек не производилось, т.к. статья преследовала совершенно иные цели.
А>2) где можно найти функции получения серийного номера HDD ???
Ну для начала данный вопрос не имеет отношения к данному форуму(мы здесь юзер-интерфейс вообще-то обсуждаем). К данному топику, который обсуждает конкретную статью, данный вопрос уж не относится абсолютно. Так штаа.... злостный оффтоп. Но вообще я бы рекомендовал копнуть в сторону WMI. Вот, кстати, ссыл прям по теме: Deriving Hdd info using WMI in C# Но все же оффтопить не следует....
Здравствуйте, alive, Вы писали:
A>Здравствуйте, _FRED_, Вы писали:
_FR>>Нет, впечатления счастливых обладателей журнала
A>Отличная статья . Я надеюсь, часть будущей книги?
Вряд ли. Я ж не писатель по призванию, а практикующий хирург... Но может по 2-му дата-гриду пару заметок и набросаю...
Но по любому — СПАСИБО за высокие оценки, приятно!
Здравствуйте, alive, Вы писали:
A>Еще пара замечаний. A>- Причина ошибки, связанной с исчезновением ToolTip-а, похоже в comctl32 версии 6. A>Например: здесь
Да, вполне возможно. Симпоты очень похожи. Но нам, как ГУЕвым прикладным программистам хотелось бы не столько правильной симптоматики сколько верного лечения болезни. А этого, похоже, пока нет.
A>- Не сразу врубился в такое предложение A>
A>По мере набора символов подчеркивания заменяются вводом.
А Вы думали статьи писать это легко? Не всегда фразы строятся идеально, не всегда... Но я старался в меру моих сил и времени.
По разделу о ClickOnce, об обновлении. Немножко запутано написано про статусы публикации Include и DataFile, вроде как по-любому обновляются только измененые файлы. По крайней мере, не выставляя никаких атрибутов в диалоговом окне ApplicationFiles, в логах IIS видно, что забирается только часть файлов приложения, те, которые были изменены.
Для того чтобы пользователь воспользовался этой технологией развертывания необходимо, чтобы у него с расширением .application(манифест публикации) и .appref-ms(умная ссылка на установленное ClickOnce-приложение) был ассоциирован "движок ClickOnce", который будет выполнять всю черную работу (тут и скачивание файлов, и хранение версий в специальном месте, и автоматическая проверка обновлений, и проверка подлинности публикаций, и много еще чего..).
Правильно ли я понимаю, что
1) на сегодняшний день единственным движком ClickOnce является .NET Framework 2.0,
2) на сегодняшний день единственным средством создания ClickOnce-публикаций является VS2005, причем публиковать можно только управляемые приложения,
3) впринципе возможно использование другого движка и другого средства создания ClickOnce-публикаций.
Как насчет развертывания не-ехе-приложений (библиотек, плагинов, других документов)?
Здравствуйте, BoresExpress, Вы писали:
BE>Здравствуйте, Щербунов Нейл!
BE>"упомяну о событии Cancel (тип bool)" BE>Не очень понял, как событие может быть типа bool? Наверное, имеется в виду свойство типа bool у соответствующих EventArgs?
Разумеется, чистая описка.
TypeValidationEventArgs.Cancel Property
Вот какой Cancel имелся в виду, спасибо за поправку! Изменения внесу вместе с "орфографические ошибочки" (см. ниже).
BE>Ещё хочу отметить, что цитаты из MSDN приводятся как на русском так и на английском языке. Хорошо бы придерживаться единообразия в этом вопросе (я бы предпочёл текст на английском).
OK, замечание принимается.
BE>Ну и орфографические ошибочки были, я на них Ctrl+Enter покликал. Исправьте их, пожалуйста.
Да с удовольствием, конечно. Вот только как мне теперь результат этих Ctrl+Enter кликаний увидеть? Что бы потом — исправить....
BE>В целом статья очень понрачилась, спасибо за труд!
Я старался...
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, vhonest, Вы писали:
V>Для того чтобы пользователь воспользовался этой технологией развертывания необходимо, чтобы у него с расширением .application(манифест публикации) и .appref-ms(умная ссылка на установленное ClickOnce-приложение) был ассоциирован "движок ClickOnce", который будет выполнять всю черную работу (тут и скачивание файлов, и хранение версий в специальном месте, и автоматическая проверка обновлений, и проверка подлинности публикаций, и много еще чего..). V>Правильно ли я понимаю, что V>1) на сегодняшний день единственным движком ClickOnce является .NET Framework 2.0,
Да, верно, поскольку
ClickOnce, part of version 2.0 of the Microsoft® .NET Framework...
и еще
ClickOnce relies on a number of capabilities that already exist in the .NET Framework and runtime, as well as a few new ones that will be introduced specifically for ClickOnce.
Прочие движки мне лично не известны.
V>2) на сегодняшний день единственным средством создания ClickOnce-публикаций является VS2005,
Если отбросить крайне неудобные методы граничащие с хакингом — верно. Хотя для серьезной конторы создание альтернытивных ClickOnce-инсталляторов/публикаторов пара пустяков. Был бы спрос. Коммерческий.
V>причем публиковать можно только управляемые приложения,
Не совсем — можно таким образом деплоить Registration-Free COM компоненты. Хотя можно и счесть это просто экзотикой. Так что ответ на эту часть вопроса... не однозначный, но скорее все же да — только управляемые. Кроме того, как следует из предыдущего абзаца, ClickOnce(сам, движок т.е.) — часть фреймворка, а если есть фреймворк — чего уж там неуправляемыми приложениями морочиться.
V>3) впринципе возможно использование другого движка и другого средства создания ClickOnce-публикаций.
Как уже было сказано — для серьезной конторы просто не вопрос. Ну посидеть над таким проектом придется, конечно.
V>Как насчет развертывания не-ехе-приложений (библиотек, плагинов, других документов)?
Выходной продукт проекта(exe/dll файл) однозначно включается в публикацию и отменить это нельзя. А вот "пристегнуть" к этому выходному файлу можно что угодно — другие dll,txt,doc,pdf,jpg,....
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, vhonest, Вы писали:
V>Автоматическую публикацию можно делать и на сервере требующем авторизацию! V>Например на nm.ru можно помещать файлы публикации по ftp указав username и пароль в строке размещение(publishing location): V>ftp://AccountName.nm.ru:password@ftp.nm.ru/ProjectName/ V>Мелочь, а приятно
Занятно! Не возражаете, если я включу этот факт в исправленную редакцию статьи?
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, vhonest, Вы писали:
V>Кстати закладка Publish для не-exe проектов напрочь отсутствует. И надо признать это снимает все лишние вопросы
Да, согласен. Значит "пристежка" возможна только к основному продукту — exe-файлу...
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Re[2]: И еще раз про ClickOnce!
От:
Аноним
Дата:
11.04.06 06:49
Оценка:
Вопрос к Smarty, помогите пожалуйста новичку Я задавал его во отдельных топиках, но вот никак...
VS2005
1. У меня контролы после компиляции выглядят как то убого выглядят, в дазайнере как XP контролы а после компиляции совершенно не так. ВОзможно какая то настройка есть, но у контролов я ничего не нашел.
2. Как сменить стиль DataGridView? В web варианте у него сразу есть выбор стилей, в виндовом нет. Неужели нужно руками прописывать и нет возможности применить какие то готовые шаблоны?
Здравствуйте, Demetris, Вы писали:
D>Вопрос к Smarty, помогите пожалуйста новичку Я задавал его во отдельных топиках, но вот никак...
D>VS2005
D>1. У меня контролы после компиляции выглядят как то убого выглядят, в дазайнере как XP контролы а после компиляции совершенно не так. ВОзможно какая то настройка есть, но у контролов я ничего не нашел.
Ф-ия Main так выглядит?
Особенно то, что жирным — есть?
D>2. Как сменить стиль DataGridView? В web варианте у него сразу есть выбор стилей, в виндовом нет. Неужели нужно руками прописывать и нет возможности применить какие то готовые шаблоны?
Абсолютно готовых, как было в дизайнере VS2003-го нету. Но сами возможности по настройке(точнее созданию) стилей — коллосальные. Можно почитать MSDN "Cell Styles in the Windows Forms DataGridView Control" по локальной ссылке ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxmclictl/html/dbb75ed6-8804-4232-8382-f9920c2e380c.htm. Или подождать мою следующую статью как раз о DataGridView вообще и ее стилях в частности.
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Re[3]: И еще раз про ClickOnce!
От:
Аноним
Дата:
11.04.06 13:10
Оценка:
Спасибо! Перерыл все настройки, в настройках проекта нашел включение XP Style.
Здравствуйте, Demetris, Вы писали:
D>Да, Project/ Properties/ Application
D>Ставим Enable Application framework и открываются опции Enable XP Visual Styles там же выбор формы для Splash Screen
???? Как говорила Алиса — "чем дальше, тем все чудесатее и чудесатее". Давайте по-порядку. VS2005 у Вас? Создали новый WinForms проект(вместе с солюшеном) — WindowsApplication1. В солюшен-эксплорере по WindowsApplication1(название проекта) правой кнопкой мыши щелк — и "Properties". Новое окно открылось — слева вкладки. Из них выбрали Application. Правильно, сюда пришел? И где там приблизительно Enable Application framework?? В упор не вижу!! Может у Вас студия другая?
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, Smarty, Вы писали:
S> Как говорила Алиса — "чем дальше, тем все чудесатее и чудесатее".
Хм... Сама фраза "Enable Application framework" выглядит весьма подозрительно, не говоря уже про какой-то "Splash Screen". ИМХО, у господина Demetris какое-то самопальное средство разработки.
Здравствуйте, Grammer, Вы писали:
G>нифига себе оценочка
Дык, пиши так же — и тебе поставят.
Чем совершеннее технически средство, тем более примитивные, никчемные и бесполезные сведения при его помощи передаются.(с)Станислав Лем
Re[5]: И еще раз про ClickOnce!
От:
Аноним
Дата:
16.04.06 03:22
Оценка:
Из них выбрали Application. Правильно, сюда пришел? И где там приблизительно Enable Application framework?? В упор не вижу!! Может у Вас студия другая?
Эта панелька ЕСТЬ ТОКА в VB NET 2005
Кстати, оченно полезная вещь))
К ВАс Очевидно C# — там этого нет
Здравствуйте, wlastas, Вы писали:
W>Из них выбрали Application. Правильно, сюда пришел? И где там приблизительно Enable Application framework?? В упор не вижу!! Может у Вас студия другая?
W>Эта панелька ЕСТЬ ТОКА в VB NET 2005 W>Кстати, оченно полезная вещь)) W>К ВАс Очевидно C# — там этого нет
Разумеется C#. Тогда все ясно...
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, Smarty, Вы писали:
BE>>Ну и орфографические ошибочки были, я на них Ctrl+Enter покликал. Исправьте их, пожалуйста. S>Да с удовольствием, конечно. Вот только как мне теперь результат этих Ctrl+Enter кликаний увидеть? Что бы потом — исправить....
Хороший вопрос. Написал на webmaster@rsdn.ru — как всегда, никакого ответа. Видимо, сообщения, созданные по Ctrl + Enter отправляются в никуда, так же как и почта, отправленная на support@rsdn.ru, webmaster@rsdn.ru и т.п.
Похоже, команда RSDN давно вымерла в полном составе, а сайт работает на полном автомате.
Здравствуйте, BoresExpress, Вы писали:
BE>Здравствуйте, Smarty, Вы писали:
BE>>>Ну и орфографические ошибочки были, я на них Ctrl+Enter покликал. Исправьте их, пожалуйста. S>>Да с удовольствием, конечно. Вот только как мне теперь результат этих Ctrl+Enter кликаний увидеть? Что бы потом — исправить....
BE>Хороший вопрос. Написал на webmaster@rsdn.ru — как всегда, никакого ответа. Видимо, сообщения, созданные по Ctrl + Enter отправляются в никуда, так же как и почта, отправленная на support@rsdn.ru, webmaster@rsdn.ru и т.п.
BE>Похоже, команда RSDN давно вымерла в полном составе, а сайт работает на полном автомате.
Да нет, все в полном порядке. Исправления принимает "дорогая редакция" и передает их по этапу автору. Потом в обратную сторону. Короче — на сайте уже версия 1.1 статьи лежит.
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, Smarty, Вы писали:
S>Да нет, все в полном порядке. Исправления принимает "дорогая редакция" и передает их по этапу автору. Потом в обратную сторону. Короче — на сайте уже версия 1.1 статьи лежит.
Здравствуйте, BoresExpress, Вы писали:
S>>Да нет, все в полном порядке. Исправления принимает "дорогая редакция" и передает их по этапу автору. Потом в обратную сторону. Короче — на сайте уже версия 1.1 статьи лежит.
BE>Т.е. Вам сообщения об ошибках передали, так?
опечатки присланные по Ctrl + Enter я правлю сам, в данном случае автору для дополнений была отправлена исправленная версия статьи
Здравствуйте, Odi$$ey, Вы писали:
OE>опечатки присланные по Ctrl + Enter я правлю сам, в данном случае автору для дополнений была отправлена исправленная версия статьи
Хорошо, теперь я знаю, что не зря Ctrl + Enter жму.
Спасибо.
Здравствуйте, BoresExpress, Вы писали:
BE>Здравствуйте, Smarty, Вы писали:
S>>Да нет, все в полном порядке. Исправления принимает "дорогая редакция" и передает их по этапу автору. Потом в обратную сторону. Короче — на сайте уже версия 1.1 статьи лежит.
BE>Т.е. Вам сообщения об ошибках передали, так?
Даже уже исправленный файл передали. А я — добавил 3-4 абзаца. И назад. А потом эта исправлено-добавленная версия на сайт легла, заменив старый и глючный вариант.
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, Smarty, Вы писали:
S>Здравствуйте, BoresExpress, Вы писали:
BE>>Здравствуйте, Smarty, Вы писали:
BE>>Т.е. Вам сообщения об ошибках передали, так?
S>Даже уже исправленный файл передали. А я — добавил 3-4 абзаца. И назад. А потом эта исправлено-добавленная версия на сайт легла, заменив старый и глючный вариант.
ЩН>Авторы: ЩН> Щербунов Нейл
ЩН>Аннотация: ЩН>Данная статья, являясь самостоятельным и законченным документом, в тоже время является и качественным развитием статьи опубликованной год назад: Новое в WinForms 2.0 Автор этих строк постарался “копать” не столько вширь, сколько вглубь. Поэтому новые контролы/фичи исследованы достаточно детально и по каждому разделу имеется довольно серьезная demo-winform, запустив которую легко наглядно увидеть “а как это оно на самом деле”. Так же упомянуты пара-тройка особенностей появившихся только в beta2 и отсутствующих в ранних версиях. Статья нацелена на аудиторию, имеющую твердый опыт работы с WinForms 1.0/1.1 и желающих сделать “быстрый старт” по направлению к WinForms 2.0.
А где можно взять примеры, которые упоминаются в данной статье?
Здравствуйте, <Аноним>, Вы писали:
А>А где можно взять примеры, которые упоминаются в данной статье?
Очевидно — прямо со станички со статьей. В сааамом верху — оглавление, а чуть ниже...
Код ко всем разделам, кроме ClickOnce
Код к разделу ClickOnce
Это и есть 2 ссылки на Rar-архивы.
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Re[3]: А где находятся примеры?
От:
Аноним
Дата:
12.09.06 05:46
Оценка:
Здравствуйте,
По поводу технологии OnceClick, при инсталляции приложения на машине пользователя, файлы приложения устанавливаются по пути c:\Documents and Settings\UserName\Local Settings\Apps\. Есть какая-нибудь возможность установки в другое место по выбору пользователя? И еще: можно ли при установке подцеплять файлы библиотек?
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, А>По поводу технологии OnceClick, при инсталляции приложения на машине пользователя, файлы приложения устанавливаются по пути c:\Documents and Settings\UserName\Local Settings\Apps\. Есть какая-нибудь возможность установки в другое место по выбору пользователя?
Нет, этого точно нет. Файлы сливаются в этот фолдер и точка. По крайней мере для текущего варианта КликВанса это так. Может потом какой option и добавят...
А> И еще: можно ли при установке подцеплять файлы библиотек?
Не понял... Можно ли с сервера публикации сливать не только *.exe, но и соотв. ему *.dll-ы? Или что здесь спрашивается?
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
А>> И еще: можно ли при установке подцеплять файлы библиотек? S>Не понял... Можно ли с сервера публикации сливать не только *.exe, но и соотв. ему *.dll-ы? Или что здесь спрашивается?
Для создания отчета используется Crystal Reports, нужно подключить некоторые его библиотеки
Здравствуйте, ingivid, Вы писали:
А>>> И еще: можно ли при установке подцеплять файлы библиотек? S>>Не понял... Можно ли с сервера публикации сливать не только *.exe, но и соотв. ему *.dll-ы? Или что здесь спрашивается?
I>Для создания отчета используется Crystal Reports, нужно подключить некоторые его библиотеки
Так, а в каком формате это все на КликВанс завязано? Т.е. опишите полный сценарий вопроса.
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Здравствуйте, BoresExpress, Вы писали:
BE>Здравствуйте, Щербунов Нейл!
BE>"упомяну о событии Cancel (тип bool)" BE>Не очень понял, как событие может быть типа bool? Наверное, имеется в виду свойство типа bool у соответствующих EventArgs?
BE>Ещё хочу отметить, что цитаты из MSDN приводятся как на русском так и на английском языке. Хорошо бы придерживаться единообразия в этом вопросе (я бы предпочёл текст на английском).
BE>Ну и орфографические ошибочки были, я на них Ctrl+Enter покликал. Исправьте их, пожалуйста.
BE>В целом статья очень понрачилась, спасибо за труд!
здравствуйте,
замечательная статья, но я нашел маленького "жучка"
в примере с BackgroundWorker , если закрыть форму до того как BackgroundWorker закончит работу, то будет
сгенерировано TargetInvokationException исключение (в случае работы с System.Windows.Forms.ToolStripProgressBar прогресс баром). потому как основная форма уже разрушена, а мы пытаемся изменить значение бара.
1) почему это не проишодит в случае System.Windows.Forms.ProgressBar бара?
2) как бы это поэлегантней исправить?
Re: Исследование WinForms 2.0 (beta 2)
От:
Аноним
Дата:
24.08.07 12:56
Оценка:
Здравствуйте, Щербунов Нейл, Вы писали про MaskedTextBox и его маску:
9,999.00$ Ожидается ввод суммы в диапазоне 0.00-9999.99. Десятичный разделитель, разделитель тысяч и символ валюты определяются свойством Culture
control-а. На моей машине пример ввода выглядит так: "7'902.14р." (без кавычек).
Так вот большая проблема с этим (обсуждается на этом форуме sql.ru).
Создаю форму, на ней MaskedTextBox, в его Mask прописываю "9,999.00$", и ввожу туда 7902.14. Получается, все как у вас в статье, но только потому, что кол-во цифр в маске совпадает с кол-вом цифр в введенном числе. А как часто нам заранее известно кол-во цифр, к-рое будут вводить в наш текстбокс? Нечасто. Так вот, если сделать в приведенном примере маску на одну девятку больше: "99,999.00$", то число будет выглять весьма "криво":
"79'02.14р.".
И другая проблема: невозможно ввести десятичную точку ни с цифровой клавиатуры, ни с основной клавиатуры. Ни запятую, ни точку, ни в русской, ни в английской раскладке
Такой вопрос. Кинул на MDI-форму ToolStripContainer, и перестали быть видны дочерние окна.
Что и где указать, чтоб ToolStripContainer не перекрывал дочерние окна?
Или контрол ToolStripContainer не предназначен для MDI-форм?
Здравствуйте, Шевченко Александр, Вы писали:
ША>Такой вопрос. Кинул на MDI-форму ToolStripContainer, и перестали быть видны дочерние окна. ША>Что и где указать, чтоб ToolStripContainer не перекрывал дочерние окна? ША>Или контрол ToolStripContainer не предназначен для MDI-форм?
Вы зачем подняли мертвую тему? Она уже два года как умерла. Некрономикон читают на баше
Bring to back из контекстного меню ToolStripContainer попробуйте.
Здравствуйте, muse, Вы писали:
ША>>Или контрол ToolStripContainer не предназначен для MDI-форм? M>Bring to back из контекстного меню ToolStripContainer попробуйте.
Безполезно ToolStripContainer и MDI-формы вместе работать не будут.
Здравствуйте, Дьяченко Александр, Вы писали:
ДА>Здравствуйте, muse, Вы писали:
ША>>>Или контрол ToolStripContainer не предназначен для MDI-форм? M>>Bring to back из контекстного меню ToolStripContainer попробуйте.
ДА>Безполезно ToolStripContainer и MDI-формы вместе работать не будут.
Для начала работы с указанным классом можно, конечно, вызвать его конструктор new System.ComponentModel.BackgroundWorker();
прямо из кода. Но, поскольку этот класс является компонентом, удобнее перетащить его иконку на форму из ToolBox.
А далее пишете:
При этом золотое правило многопоточности, о котором говорилось выше, несколько видоизменяется и звучит так: “Код внутри обработчика события DoWork исполняется в отдельной рабочей нити и не должен пытаться получить доступ к элементам пользовательского интерфейса. Обработчики же двух прочих событий ProgressChanged и RunWorkerCompleted исполняются в основной, UI-нити и могут свободно к этим элементам обращаться”.
Так я не понял, я могу из метода вызывать myBackgroundWorker.ReportProgres()? Или этот объект хоть и перетаскивается на форму, элементом интерфейса не считается?