Здравствуйте, 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р.".
И другая проблема: невозможно ввести десятичную точку ни с цифровой клавиатуры, ни с основной клавиатуры. Ни запятую, ни точку, ни в русской, ни в английской раскладке
Re[3]: ClickOnce - не верное представление о DataFile-ах
Здравствуйте, 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, ибо в этом случае они скачиваются только тогда, когда хеш изменился...
Такой вопрос. Кинул на 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()? Или этот объект хоть и перетаскивается на форму, элементом интерфейса не считается?