понедельник, 12 сентября 2011 г.

Ошибка при сборке решения “Невозможно загрузить файл или сборку “...” или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат”.

Ну и вот, огорчило, как-то, .NET-братишку, что проект, который он перенёс с W7x86 на W7x64 не запускался в VS2010, а писал, что: «Невозможно загрузить файл или сборку "…" или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат. Строка …, позиция … …\….resx». Печально? Нет…
А что печально? Печально, что до этой ошибки при компиляции он видел сообщение: «Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)”, которая решилась изменением параметра компиляции AnyCPU на x86. И казалось бы: «Ура, я буду продолжать работать за своим крутейшем компом с core i5, и 6-ю гигами памяти!», ан нет, запускаться-то всё запускалось… А при изменении .cs генерировался новый .resx, на который ругался VS2010, мол: «Привет!  «Невозможно загрузить файл или сборку "…" или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат. Строка …, позиция … …\….resx». Печально? Да…
Внутренний Шойтан поглатил .NET-братишку: «Кинь монитор об стену!! Перегрызи кабель клавиатуры! Выдерни из под стола системник и растопчи его в лепёшку! Хи-хи-хи-хи-хи!». «Да пошёл ты!» - спокойно ответил ему .NET-братишка, «Дерьмо это всё! И не с таким справлялись..». Он открыл .resx файл, на который ругался компиль, и поменял
«AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w»
на
«AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w»
Учись, браток... Дави чертей внутри себя.

Полезные ссылки:
http://connect.microsoft.com/VisualStudio/feedback/details/554759/error-in-control-resx-file-when-adding-imagelist
http://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020

вторник, 23 августа 2011 г.

Query applied to bindingsource.filter doesnt work

Каталог русскоязычных ресурсов Faculty Resource Center

Разработка приложений для настольных ПК

Введение в Wacom Javascript API

пятница, 5 августа 2011 г.

Полезные ссылки

http://habrahabr.ru/company/microsoft/blog/123378/ - диск с сопроводительными материалами DevCon выложен онлайн
http://habrahabr.ru/company/microsoft/blog/125000/ - бесплатная централизованная библиотека кода: Microsoft All-In-One Code Framework
http://habrahabr.ru/company/microsoft/blog/125633/ - новый дизайн MSDN. Подборка полезных материалов по веб-разработке за июль
http://www.codeproject.com/KB/cs/getusername.aspx - Get The User Name In C# For NT Authentication 

среда, 13 июля 2011 г.

ADO.NET Data Architecture

http://forums.techarena.in/software-development/1135837.htm
http://flylib.com/books/en/3.257.1.71/1/
http://archive.cnblogs.com/a/1393875/
http://flylib.com/books/en/2.73.1.49/1/ 
http://www.progress-japan.co.jp/support/SupportLink/dev_center/net/basic.html
http://kb.cnblogs.com/a/474123/
http://blogs.msdn.com/b/mbakirov/archive/2009/05/28/9646477.aspx
http://www.cnblogs.com/lizunicon/archive/2008/09/27/1299928.html
http://www.visualcplusdotnet.com/visualcplusdotnet27.html
http://rthumati.wordpress.com/2009/11/13/ado-net-core-classesconnections-part-1/ (4-ая часть)
http://www.systhinker.com/html/66/n-2466.html
http://www.codeproject.com/KB/database/DatabaseAcessWithAdoNet1.aspx
http://www.developerfusion.com/article/84366/adonet-dataadapter/
http://itpro.nikkeibp.co.jp/article/COLUMN/20070320/265659/
http://docstore.mik.ua/orelly/ - ссылка понравилась

BindingSource and BindingNavigator in C# 2.0

http://www.codeproject.com/KB/grid/BindSourceBindingNavCS.aspx

Совет: Не используйте DataAdapter.

http://www.cyberforum.ru/ado-net/thread252695.html

вторник, 5 июля 2011 г.

Дружба IE и ActiveX

http://www.free-lance.ru/blogs/view.php?tr=634999

Содержание книги "Visual C# 2010 на примерах"

Оглавление ВВЕДЕНИЕ

ГЛАВА 1. ПРОСТЕЙШИЕ ПРОГРАММЫ С ЭКРАННОЙ ФОРМОЙ И ЭЛЕМЕНТАМИ УПРАВЛЕНИЯ
Пример 1. Форма, кнопка, метка и диалоговое окно
Пример 2. Событие MouseHover
Пример 3. Ввод данных через текстовое поле TextBox с проверкой типа методом TryParse
Пример 4. Ввод пароля в текстовое поле и изменение шрифта
Пример 5. Управление стилем шрифта с помощью элемента управления CheckBox
Пример 6. Побитовый оператор "исключающее ИЛИ"
Пример 7. Вкладки TabControl и переключатели RadioButton
Пример 8. Свойство Visible и всплывающая подсказка ToolTip в стиле Balloon
Пример 9. Калькулятор на основе комбинированного списка ComboBox
Пример 10. Вывод греческих букв, символов математических операторов. Кодовая таблица Unicode

ГЛАВА 2. ПРОГРАММИРОВАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ
Пример 11. Ввод и вывод в консольном приложении
Пример 12. Вывод на консоль таблицы чисел с помощью форматирования строк
Пример 13. Вызов MessageBox.Show в консольном приложении. Формат даты и времени
Пример 14. Вызов функций Visual Basic из программы C#

ГЛАВА 3. ИНИЦИИРОВАНИЕ И ОБРАБОТКА СОБЫТИЙ МЫШИ И КЛАВИАТУРЫ
Пример 15. Координаты курсора мыши относительно экрана и элемента управления
Пример 16. Создание элемента управления Button "программным" способом и подключение события для него
Пример 17. Обработка нескольких событий одной процедурой
Пример 18. Калькулятор
Пример 19. Ссылка на другие ресурсы LinkLabel
Пример 20. Обработка событий клавиатуры
Пример 21. Разрешаем вводить в текстовое поле только цифры
Пример 22. Разрешаем вводить в текстовое поле цифры, а также разделитель целой и дробной части числа

ГЛАВА 4. ЧТЕНИЕ, ЗАПИСЬ ТЕКСТОВЫХ И БИНАРНЫХ ФАЙЛОВ, ТЕКСТОВЫЙ РЕДАКТОР
Пример 23. Чтение/запись текстового файла в кодировке Unicode. Обработка исключений try...catch
Пример 24. Чтение/запись текстового файла в кодировке Windows 1251
Пример 25. Простой текстовый редактор. Открытие и сохранение файла. Событие формы Closing
. Программа тестирования знаний студента по какому-либо предмету
Пример 27. Простой RTF-редактор
Пример 28. Печать текстового документа
Пример 29. Чтение/запись бинарных файлов с использованием потока данных

ГЛАВА 5. РЕДАКТИРОВАНИЕ ГРАФИЧЕСКИХ ДАННЫХ
Пример 30. Простейший вывод отображения графического файла в форму
Пример 31. Использование элемента PictureBox для отображения растрового файла с возможностью прокрутки
Пример 32. Рисование в форме указателем мыши
Пример 33. Рисование в форме графических примитивов (фигур)
Пример 34. Выбор цвета с использованием ListBox
Пример 35. Печать графических примитивов
Пример 36. Печать BMP-файла
Пример 37. Построение графика

ГЛАВА 6. УПРАВЛЕНИЕ БУФЕРОМ ОБМЕНА С ДАННЫМИ В ТЕКСТОВОМ И ГРАФИЧЕСКОМ ФОРМАТАХ
Пример 38. Буфер обмена с данными в текстовом формате
Пример 39. Элемент управления PictureBox. Буфер обмена с растровыми данными
Пример 40. Имитация нажатия комбинации клавиш <Alt>+<PrintScreen>. Вызов функции Microsoft API
Пример 41. Запись содержимого буфера обмена в BMP-файл
Пример 42. Использование таймера Timer
Пример 43. Запись в файлы текущих состояний экрана каждые пять секунд

ГЛАВА 7. ВВОД И ВЫВОД ТАБЛИЧНЫХ ДАННЫХ. РЕШЕНИЕ СИСТЕМЫ УРАВНЕНИЙ
Пример 44. Формирование таблицы. Функция String.Format
Пример 45. Форматирование Double-переменных в виде таблицы. Вывод таблицы на печать. Поток StringReader
Пример 46. Вывод таблицы в Internet Explorer
Пример 47. Формирование таблицы с помощью элемента управления DataGridView
Пример 48. Табличный ввод данных. DataGridView. DataTable. DataSet. Инструмент для создания файла XML
Пример 49. Решение системы линейных уравнений. Ввод коэффициентов через DataGridView

ГЛАВА 8. ЭЛЕМЕНТ УПРАВЛЕНИЯ WEBBROWSER
Пример 50. Отображение HTML-таблиц
Пример 51. Отображение Flash-файлов
Пример 52. Отображение Web-страницы и ее HTML-кода
Пример 53. Программное заполнение Web-формы

ГЛАВА 9. ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ MS WORD, MS EXCEL, AUTOCAD И MATLAB
Пример 54. Проверка правописания в текстовом поле с помощью обращения к MS Word
Пример 55. Вывод таблицы средствами MS Word
Пример 56. Обращение к функциям MS Excel из Visual C# 2010
Пример 57. Использование финансовой функции MS Excel
Пример 58. Решение системы уравнений с помощью функций MS Excel
Пример 59. Построение диаграммы средствами MS Excel
Пример 60. Управление функциями AutoCAD из программы на Visual C# 2010
Пример 61. Вызов MATLAB из вашей программы на Visual C# 2010
Пример 62. Решение системы уравнений путем обращения к MATLAB

ГЛАВА 10. ОБРАБОТКА БАЗ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ ADO.NET
Пример 63. Создание базы данных SQL Server
Пример 64. Отображение таблицы базы данных SQL Server в экранной форме
Создание базы данных в среде MS Access
Пример 65. Редактирование таблицы базы данных MS Access в среде Visual Studio без написания программного кода
Пример 66. Отображение таблицы базы данных MS Access в экранной форме
Пример 67. Чтение всех записей из таблицы БД MS Access на консоль с помощью объектов классов Command и DataReader
Пример 68. Создание базы данных MS Access в программном коде
Пример 69. Запись структуры таблицы в пустую базу данных MS Access. Программная реализация подключения к БД
Пример 70. Добавление записей в таблицу базы данных MS Access
Пример 71. Чтение всех записей из таблицы базы данных c помощью объектов классов Command, DataReader и элемента управления DataGridView
Пример 72. Чтение данных из БД в сетку данных DataGridView с использованием объектов классов Command, Adapter и DataSet
Пример 73. Обновление записей в таблице базы данных MS Access
ПРимер 74. Удаление записей из таблицы базы данных с использованием SQL-запроса и объекта класса Command

ГЛАВА 11. ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ LINQ
Пример 75. LINQ-запрос к массиву данных
Пример 76. LINQ-запрос к коллекции (списку) данных
Пример 77. Группировка элементов списка с помощью LINQ-запроса
Пример 78. LINQ-запрос к словарю данных Dictionary
Пример 79. Создание XML-документа методами классов пространства имен System.Xml.Linq
Пример 80. Извлечение значения элемента из XML-документа
Пример 81. Поиск строк (записей) в XML-данных с помощью LINQ-запроса
Пример 82. LINQ-запрос к набору данных DataSet
Пример 83. Доступ к базе данных с помощью LINQ to SQL

ГЛАВА 12. ДРУГИЕ ЗАДАЧИ, РЕШАЕМЫЕ С ПОМОЩЬЮ WINDOWS APPLICATION
Пример 84. Проверка вводимых данных с помощью регулярных выражений
Пример 85. Управление прозрачностью формы
Пример 86. Время по Гринвичу в полупрозрачной форме
Пример 87. Ссылка на процесс, работающий в фоновом режиме, в форме значка в области уведомлений
Пример 88. Нестандартная форма. Перемещение формы мышью
Пример 89. Проигрыватель Windows Media Player 11
Пример 90. Программирование контекстной справки. Стандартные кнопки в форме
Создание инсталляционного пакета для распространения программы

ГЛАВА 13. ПРОГРАММИРОВАНИЕ ПРОСТЕЙШИХ WEB-ОРИЕНТИРОВАННЫХ ПРИЛОЖЕНИЙ НА VISUAL C# 2010
Создание Web-страницы на языке HTML. Интернет-технологии
Web-хостинг на платформах UNIX и Windows
Клиент-серверное взаимодействие на основе технологии ASP.NET
Отладка активного Web-приложения
Пример 91. Создание простейшей активной Web-страницы на Visual C# 2010
Пример 92. Проверка введенных пользователем числовых данных с помощью валидаторов
Пример 93. Проверка достоверности ввода имени, адреса e-mail, URL-адреса и пароля с помощью валидаторов
Пример 94. Регистрация и аутентификация пользователя с помощью базы данных Access
Пример 95. Таблица с переменным числом ячеек, управляемая двумя раскрывающимися списками
Пример 96. Организация раскрывающегося меню гиперссылок с помощью DropDownList
Пример 97. Передача данных между Web-страницами через параметры гиперссылки
Пример 98. Передача данных HTML-формы на ASPX-страницу методами класса Request
Пример 99. Передача значений элементов управления на другую Web-страницу с помощью объекта PreviousPage
Пример 100. Отображение табличных данных в Web-форме с помощью элемента управления GridView
Пример 101. Отображение в Web-форме хэш-таблицы

ГЛАВА 14. ТИПИЧНЫЕ WEB-ОРИЕНТИРОВАННЫЕ ПРИЛОЖЕНИЯ ASP.NET НА VISUAL C# 2010
Пример 102. Чтение/запись текстового файла Web-приложением
Пример 103. Программирование счетчика посещений сайта с использованием базы данных и объекта Session
Пример 104. Чтение/запись cookie-файлов
Пример 105. Вывод изображения в Web-форму
Пример 106. Формирование изображения методами класса Graphics и вывод его в Web-форму
Пример 107. Гостевая книга
Пример 108. Программирование капча
Пример 109. Отображение времени в Web-форме с использованием технологии AJAX

ГЛАВА 15. СОЗДАНИЕ WEB-СЛУЖБ И ИХ КЛИЕНТОВ
О Web-службах
Пример 110. Клиентское Web-приложение, потребляющее сервис Web-службы "Прогноз погоды"
Пример 111. Клиентское Windows-приложение, использующее Web-службу "Прогноз погоды"
Пример 112. Создание простейшей Web-службы
Пример 113. Создание Windows-приложения — потребителя сервиса Web-службы
Пример 114. Web-служба "Торговая рекомендация на рынке Forex"
Пример 115. Клиентское приложение, потребляющее сервис Web-службы "Торговая рекомендация на рынке Forex"
Пример 116. Клиентское Web-приложение, потребляющее сервис Web-службы "Морфер"
Пример 117. Получение данных от Web-службы Центрального банка РФ Web-приложением
Пример 118. Получение данных от Web-службы Национального банка Республики Беларусь Windows-приложением

ГЛАВА 16. ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ WPF
Что может нам дать WPF?
Пример 119. Создание простейшего WPF-приложения. Компоновка элементов управления с помощью сетки Grid
Пример 120. Использование одного из эффектов анимации
Пример 121. Эффект постепенной замены (прорисовки) одного изображения другим
Пример 122. Закрашивание области текста горизонтальным линейным градиентом
Пример 123. Проверка орфографии в элементе управления редактирования текста
Пример 124. Программирование WPF-проигрывателя. Компоновка элементов управления с помощью панели StackPanel
Пример 125. Наложение текста на видео
Пример 126. Переходы в WPF-приложениях
ПРИЛОЖЕНИЕ. ОПИСАНИЕ КОМПАКТ-ДИСКА
ПРДМЕТНЫЙ УКАЗАТЕЛЬ
IV Оглавление V Оглавление

Ссылка на книгу: http://www.bhv.ru/books/full_contents.php?id=188664 

DataGrid FAQ

Как перейти на позицию строки в DataGridView по заданному значению?

А вот так:
BindingSource.Position = BindingSource.Find("поле", "значение")

http://msdn.microsoft.com/ru-ru/library/ms158165(VS.90).aspx - здесь подробнее;

воскресенье, 3 июля 2011 г.

наличие JVM в браузерах клиентов

Удивительное дело: делаешь кросбраузерную вёрстку проверенными уже не первый год инструментами, сдаёшь её заказчику, а заказчик звонит в выходной день и жалуется на то, что у него в Опере страница отображается без возможности нажатия кнопочек и без скролбара. Ты говоришь ему поставить последнюю Оперу (Ну, просто потестить). Он ставит последнюю Оепру, а у него тоже самое. И ты задаёшься вопросом, а может у него Windows XP с Service Pack 1? О Service Pack вопросы задавать бесполезно, спрашиваешь о операционной системе. Точно, XP.


Ссылки для решения проблемы: 

http://tyuwoork.blogspot.com/2008/11/user-agent.html - Скрипт для определения браузера, ОС и др. из User-Agent¡!
http://www.masterwebs.ru/index.php?showtopic=6834 - Скрипт для определения браузера и ОС., А так же определить версии.
http://www.websr.ru/opredelenie-os-polzovatelya.html - Определение ОС пользователя
http://xpoint.ru/forums/thread/35550.xhtml - Правильный способ определить наличие/отсутствие JVM в броузере

пятница, 1 июля 2011 г.

regedit Windows XP

http://www.interface.ru/microsoft/pspw.htm#5
http://www.rohos.ru/help/customize_rohos_logon.htm
http://www.pc-problems.ru/index.php?s=4&idk=17&idpk=22&ida=48
http://bormoney.ru/forum/95-1358-1
http://digiworld.ucoz.com/publ/v_pomoshh_sisadminu/userinit_ili_zavershenie_seansa_windows_srazu_posle_zagruzki_lichnykh_parametrov/8-1-0-6
http://tudimon.com/2011/05/04/zavershenie-seansa-windows-srazu-posle-zagruzki-lichnyh-parametrov.html
http://boombox.perm.ru/forum2/index.php?topic=639.0

четверг, 30 июня 2011 г.

Инструменты C# для разработки БД

Однажды в одной московской конторе мой собеседник задал мне вопрос: «В чём разница между СSS1 и CSS2?», - и я не смог на него ответить, на чём собеседование закончилось словами: «Ну, мы вам перезвоним». После этого собеседования во мне развилось что-то вроде комплекса неполноценности. И теперь, работая с Visual Studio, мне кажется, что я должен знать не только общие принципы решения той или иной задачи, но и знать наизусть все классы, методы, свойства, ключевые слова, операторы языка и директивы препроцессора C# - что весьма невозможно, до тех пор, пока мы не «урежимся». А урезаться, конкретно для меня, стоит в направлении разработки баз данных.

Что я использую при создании клиентской части своего приложения?

DataGridView
DataSet
DataTable
TableAdapter
DataSource
BindingSource
DataRow
DataRowView
CurrencyManager
OleDbCommandBuilder
OleDbDataAdapter

Wait…

Сегодняшние ссылки

http://smashingmagazine.artician.com/?pagenum=21 - какой-то интересный журнал
http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/05/CSS-Help-Sheet-large.jpg - какая-та интересная шпаргалка

вторник, 28 июня 2011 г.

Как увеличить высоту TextBox

Нужно в свойствах TextBox, в поле Multiline указать значение "True".

В коде это выглядит так:
TextBox1.Multiline = true;

А далее, указать нужный нам размер высоты.

Сегодняшние ссылки

Как сделать ячейку в DataGridView неактивной

datagridview1.Column[0].Visible = false;

где 0 - это порядковый номер колонки (0, 1, 2, 3...) 

понедельник, 27 июня 2011 г.

Программирование под Windows Phone 7

И тут, я такой, весь из себя Microsoft, говорю: "Ну и что, что Bada.. Мы ничем не хуже". И продолжаю творить обзор комуникаторов уже на базе Windows Phone 7. И вот что находим:

Телефоны на базе Windows Phone 7:
HTC 7 Surround - 3.8-дюймовый телефон со динамиком-слайдером (он же T8788)
HTC HD7- 4.3 дюймовый флагман (он же Schubert)
HTC 7 Trophy - 3.8-дюймовый телефон (он же Spark)
HTC 7 Mozart - 3.7-дюймовый телефон
Dell Venue Pro - 4.1-дюймовый портретный QWERTY-слайдер (он же Lightning)
Samsung Focus - 4-дюймовый безклавиатурный телефон с экраном Super AMOLED (он же Cetus)
Samsung Omnia 7 - 4--дюймовый безклавиатурный телефон с экраном Super AMOLED (он же i8700)
LG Optimus 7 - 3.8-дюймовый слайдер (он же E900)
LG Quantum - 3.5-дюймовый слайдер (он же C900)
HTC 7 Pro - 3.6-дюймовый QWERTY-слайдер для CDMA-оператора Sprint (2011 год)

Про Windows Phone 7:
Программируем Windows Phone 7–Silverlight
Детальный обзор Windows Phone 7
Windows Phone 7 : вопросы к Microsoft 
Книга: "Программируем Windows Phone 7"
Разработка под Windows Phone 7 для Android-разработчиков
программирование Windows Phone 7
Александр Климов про Windows Phone 7
WindowsPhoneClub
Программирование игр на XNA для Windows Phone 7
Материалы для программирования под Windows Phone 7
4PDA > Windows Phone 7
Информативный подкаст про WP7
ведущий разработчик программного обеспечения и Microsoft Student Partner Guru Юрий Трухин
Юрий Трухин, по жизни Гуру с надстройкой над MCP, просит заметить, что он не студент

Программирование под Bada

Мой друг работает в организации, где сотрудникам выдают крутейшие ноуты и крутейшие наладонники. Я не очень обрадовался этому, потому что в той организации, где работаю я, даже кондиционера в кабинет не добьёшься, и даже куллера. И как-то раз, сидя у друга в машине, я подержал его, что-то похожее на HTC Incredible S black. Ну, и учитывая то, что у меня до сих пор Samsung c130, я начал ощущать себя ущербным и обделённым - эту проблему надо было срочно решить и я пошёл в магазин, смотреть что-нибудь сенсорное, наладонное и помещающееся в руке. И мне по внешнему дизайну понравился Samsung Wave II (S8530). Порывшись в рунете, я узнал о существовании операционной системы Bada. А можно ли что писать под эту ОС?, - задался я вопросом. И оказывается можно. Вот, что я нашёл:

http://www.samsungbada.ru/forum/ - программирование на Bada;
http://www.bada.com/ - официальный сайт Bada;
http://developer.bada.com/apis/index.do - сайт разработчиков;
http://badablog.ru/ - всё о Bada в одном блоге;
http://habrahabr.ru/blogs/mobiledev/112334/ - картографические возможности Bada;
http://www.realcoding.net/ - о Bada всего одна запись, и то, никакая. Но зато много чего о другом!

Активность элемента

Главная страница MSDN

Интересная работа

http://habrahabr.ru/job/5163/
Знал бы я ещё всё это.. :) 

Задачка

Архив программиста

http://www.archival.ru/node/251

четверг, 23 июня 2011 г.

Google Analytics

среда, 22 июня 2011 г.

Связанный ComboBox

В Visual Studio 2010 существует стандартный элемент управления – ComboBox, задача которого является отображение редактируемого текстового поля и раскрывающегося списка допустимых значений. По своей неопытности настроить связанный с БД ComboBox, который помимо связанного списка показывал бы ещё и текущее состояние строки из таблицы в поле которой указан код, по которому она связана с дочерней таблицей и где дочерняя таблица и есть список выпадающих items'ов Combobox, у меня не получалось. Но я знал, как на определённый столбец отображаемой таблицы в DataGridView повесить Combobox. Время решения задачи поджимало, и я решил сделать связанный Combobox на основе DataGridView, убрав при этом отображение всех ненужных мне полей – и это весьма ламерское решение, как выяснилось позже.

В «DataGridView Задачи» выбираем «Правка столбцов», где выбираем столбец и в свойствах привязанного столбца в ColumnType указываем: «DataGridViewComboBoxColumn». Затем определяем DataSource, DisplayMemer и ValueMember. Где в DataSource указывается таблица, связанная (или не связанная, но обязательно с содержанием всех ключей основной таблицы) таблица. В DisplayMember мы указываем строку, определяющую свойство или столбец, из которого извлекаются строки для отображения в полях со списком, или проще говоря, то, что должно отображаться в выпадающем списке (и для того, чтобы пользователь работал не с кодом мастера Васильева В. С., а именно с его Ф.И.О.), а в ValueMember мы выбираем поле, в котором указан код Васильева В.С. (это значение будет записываться в БД в основную таблицу при изменении данных). Далее, всем ненужным нам полям выставляем False в Visible (очень нудно, когда столбцов очень много, у меня их было 24 и это надо было сделать на 8 Combobox), тем самым убрав всё лишнее отображаемое. Затем переходим в свойства dataGridView, где убираем отображение строки заголовков столбцов, убираем отображение столбца, содержащего заголовки строк, а типу полосы прокрутки(ScrollBars) присваиваем значение «None». Затем нужно поиграть со цветом dataGridView, где синий фон выделенной строки поменять на белый, а цвет текста поменять на чёрный. И, вот, у нас получился связанный ComboBox, который умеет не только выбрасывать список, но и отображать текущее состояние строки. И всё бы хорошо, если бы пользователь (или занудный тестер, который сидит внутри меня), не умудрился нажать клавишу «вверх» или «вниз». Ведь, так как фактически, ComdoBox содержится внутри DataGridView, и фактически там отображается не одна строка, а все строки нашего BindingSource (если я не путаюсь в терминологии, если точнее, то метод Fill, GetData() нашего TableAdapter). То при нажатии «вниз» мы перемещаемся на следующую строку того самого BindingSource таблицы указанной в DataGridView, вместо того, чтобы перемещаться вниз по items’ам нашего ComboBox. Чтобы запретить пользователю делать это, нам нужно создать отдельный метод, который будет выбирать по SQL-запросу текущую строку – а это вычисление ключа текущей строки главного DataGridView, и передача его в SQL запрос DataGridView в которой содержится наш ComboBox – весьма нудное занятие. Проще вернуться к нормальному ComboBox и изучить его более подробно, чем при первом знакомстве. Хотя, данное решение может пригодиться для создания выпадающего списка с содержанием нескольких столбцов. Или для ComboBox, внутри которого есть ещё один ComboBox.

С нормальным ComboBox дела идут куда проще в контексте поставленной мне задачи. В свойствах ComboBox определяем DataSource, DisplayMember и ValueMember. В DataSource указываем то, что у нас должно отображаться в выпадающем списке ComboBox. В DisplayMember и ValueMember указываем отображаемые и вносимые данные соответственно. В задачах СomboBox определяем «выбранное значение», где указываем столбец родительской таблицы, в который мы вносим изменения. На этом создание ComboBox заканчивается. Не нужно определение новых TableAdapter, новых BindingSource и новых методов чтения/обновления БД.

пятница, 17 июня 2011 г.

Примеры интерфейсов (графическое представление, исходный код, элементы)

Анимация "Система шлюзов"

Очень понравилось. Можно часами сидеть перед монитором, подсчитывая количество прошедших через шлюзы кораблей.
http://www.oc3.ru/portfolio/demoobjects/files/oc3_shluz/oc3_shluz.swf

Книги по юзабилити, дизайну, психологии и проектированию ПО

Корзина полезных ссылок

Ссылочки разберу позже. Выкладываю, чтобы не забыть, что они есть.

http://msdn.microsoft.com/ru-ru/library/system.data.datatable.load.aspx
http://krez0n.org.ua/archives/84
http://net-linq.blogspot.com/2010/09/3-datagridview.html
http://www.sql.ru/forum/actualthread.aspx?tid=414328&hl=c
http://forum.codenet.ru/archive/index.php/t-29267.html
http://kbss.ru/blog/168.html
http://forum.sources.ru/index.php?showtopic=291836
http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/413c3fc7-948b-4596-9283-48b867e20b2b
http://www.velocityreviews.com/forums/t98786-q-query-of-dataadapter.html
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.bindingsource.currentchanged.aspx
http://www.cyberforum.ru/ado-net/thread168736.html
http://www.gotdotnet.ru/forums/14/132141/
http://forums.realcoding.net/index.php?showtopic=15680
http://datagridview.narod.ru/index9.html
http://ru.w3support.net/index.php?db=so&id=520051
http://www.cyberforum.ru/ado-net/thread219051.html
http://wincontrol.rapidscada.ru/articles/datagridview.htm
http://www.gotdotnet.ru/forums/14/102753/486958/
http://www.intuit.ru/department/school/cs4kids/6/3.html
http://forums.realcoding.net/index.php?showtopic=17951
http://simple-cs.ru/store/Win/3/
http://kbss.ru/blog/168.html
http://forum.vingrad.ru/forum/topic-198827.html
http://msdn.microsoft.com/ru-ru/library/system.data.datarow(v=VS.90).aspx
http://www.cyberforum.ru/ado-net/thread54419.html
http://www.skillcoding.com/Default.aspx?id=147
http://www.cyberforum.ru/csharp-beginners/thread169064.html
http://www.ishodniki.ru/art/artshow.php?id=565
http://www.ishodniki.ru/art/art_progr/net/550.html
http://www.cats-cry.info/c-sharp/
http://www.cats-cry.info/ispol_zovanije_sopostavlenija_tablemapping_.html
http://www.cats-cry.info/para_slov_o_strokah.html
http://www.cats-cry.info/sozdanije_okon_nestandartnoj_formy_v_c_.html
http://www.cats-cry.info/poluchit_tekushhuju_stroku_v_bd_datagridview_.html
http://www.intuit.ru/department/internet/aspnetvsnet/10/4.html
http://www.intuit.ru/department/internet/aspnetvsnet/10/5.html
http://www.gotdotnet.ru/forums/2/42416/
http://forum.codenet.ru/threads/57706-DataGridView-BindingSource-List
http://msdn.microsoft.com/ru-ru/library/ms158145.aspx
http://msdn.microsoft.com/ru-ru/library/y0h25we8.aspx
http://msdn.microsoft.com/ru-ru/library/k26k86tb.aspx
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.bindingsource.aspx
http://www.cats-cry.info/poluchit_tekushhuju_stroku_v_bd_datagridview_.html
http://msdn.microsoft.com/ru-ru/library/ms158145.aspx
http://forum.pocketz.ru/lofiversion/index.php?t35929.html
http://lifeasflash.blogspot.com/2009/02/datagridview-bindingsource-position.html
http://www.cyberforum.ru/csharp-net/thread111827.html
http://www.codeproject.com/KB/grid/FromDataGrid2DataSet.aspx
http://nullpro.info/2011/kak-udalit-tekushhuyu-stroku-vse-stroki-iz-datagridviewdatatable-v-c-net/
http://www.sql.ru/forum/actualthread.aspx?tid=493710
http://www.sql.ru/forum/actualthread.aspx?tid=154682
http://www.gotdotnet.ru/forums/3/128674/
http://www.sql.ru/forum/actualthread.aspx?tid=311526
http://www.ityourself.ru/bazi-dannich/vvedenie-v-kurs-bazi-dannich/29.html
http://msdn.microsoft.com/ru-ru/library/t4a23xx4.aspx
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.datagridview.setcurrentcelladdresscore.aspx
http://www.cyberforum.ru/archive/t-84356.html
http://html-css-js.org.ua/operation-is-not-valid-because-it-results-in-a-reentrant-call-to-the-setcurrentcelladdresscore-function-212.htm
http://bytes.com/topic/net/answers/417025-gridview-exception-reentrant-call-setcurrentcelladdresscore-function
http://connect.microsoft.com/VisualStudio/feedback/details/390918/datagridview-control-throws-invalidoperationexception-reentrant-call-to-setcurrentcelladdresscore
http://ru.w3support.net/index.php?db=so&id=893752


Как скрыть вкладку TabControl?

Надо почитать msdn. И вот что там написано:
Вкладки в элементе управления TabControl являются частью TabControl, но не частями отдельных элементов управления TabPage. Члены класса TabPage, например свойство ForeColor, влияют только на клиентский прямоугольник страницы вкладки, но не на вкладки. Кроме того, метод Hide объекта TabPage не будет скрывать вкладку. Чтобы скрыть вкладку, необходимо удалить элемент управления TabPage из коллекции TabControl.TabPages. http://msdn.microsoft.com 
Делается это так:

tabControl1.TabPages.Remove(tabControl1.TabPages[1]);

Когда понадобится, восстановить обратно.

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

Несколько ссылок по TabControl.TabPages:
http://simple-cs.ru/store/Web/11/
http://www.dotsite.ru/Publications/Publication156.aspx
http://teachpro.ru/Уроки...
http://netsources.narod.ru/cf/tabcontrol.html

Книжные новинки, блог Виктора Штонда

Нашёл интересный блог. В блоге обсуждаются новые книги, даётся краткий обзор и ссылки, где их можно приобрести. Книга - это всегда хорошо: можно полистать, сделать пометки маркером, взять с собой, и наконец, собрать целый шкаф вкусных книг и показать это всё какой-нибудь девахе, которая придёт к тебе, когда у тебя дома будет чистенько. А цифра - она у всех есть, девах гигами не удивишь..

http://shtonda.blogspot.com/ - интересный блог. Пешочком рекомендует!

вторник, 31 мая 2011 г.

Сохранение изменений в БД через DataGridView

По старинке, для внесения изменений, произошедших в DataGridView, я определял заново соединение, OleDbDataAdapter, OleDbCommandBuilder и DataSet – и, возможно, это и правильно, потому что нам потом легче изменять, например, строку запроса.
public partial class Frm_ref_staff : Form
    {
        public Frm_ref_staff()
        {
            InitializeComponent();
        }
        //объявление строки соединения
        public OleDbConnection conn;
        //view1
        public OleDbDataAdapter dataadapter_tbl_staff;
        public OleDbCommandBuilder comandbuilder_tbl_staff;
        public DataSet dataset_tbl_staff;
        private void Frm_ref_staff_Load(object sender, EventArgs e)
        {
            //строка соединения
            conn = new OleDbConnection("Provider=SQLOLEDB;Data Source=IST;Integrated Security=SSPI;Initial Catalog=DBGIS");
            if (conn.State != ConnectionState.Open)
                conn.Open();

            dataadapter_tbl_staff = new OleDbDataAdapter("SELECT * FROM Tbl_officer", conn);
            comandbuilder_tbl_staff = new OleDbCommandBuilder(dataadapter_tbl_staff);
            dataset_tbl_staff = new DataSet();
            dataadapter_tbl_staff.Fill(dataset_tbl_staff, "staff");
            dataadapter_tbl_staff.TableMappings.Add("Table_staff", "staff");
            dataGridView1.DataSource = dataset_tbl_staff.Tables[0];
        }
        private void Frm_ref_staff_FormClosed(object sender, FormClosedEventArgs e)
        {
            ((Frm_VodoCheb)this.MdiParent).staffToolStripMenuItem.Visible = true;
        }
        private void button1_Click(object sender, EventArgs e)//кнопка "Сохранить изменения"
        {
            try
            {
                dataadapter_tbl_staff.Update((DataTable)dataGridView1.DataSource);
                MessageBox.Show("Изменения в базе данных выполнены!",
                  "Уведомление о результатах", MessageBoxButtons.OK);
            }
            catch (Exception)
            {
                MessageBox.Show("Изменения в базе данных выполнить не удалось!",
                  "Уведомление о результатах", MessageBoxButtons.OK);
            }
        }
    }

Но опытный Борис Моисеев будет против таких излишеств, он обойдётся следующим:

    public partial class Frm_ref_staff : Form
    {
        public Frm_ref_staff()
        {
            InitializeComponent();
        }

        private void Frm_ref_staff_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "dataSet_DBGIS_ASU.Tbl_officer". При необходимости она может быть перемещена или удалена.
            this.tbl_officerTableAdapter.Fill(this.dataSet_DBGIS_ASU.Tbl_officer);
        }

        private void Frm_ref_staff_FormClosed(object sender, FormClosedEventArgs e)
        {

            ((Frm_VodoCheb)this.MdiParent).staffToolStripMenuItem.Visible = true;
        }

        private void button1_Click(object sender, EventArgs e)//кнопка "Сохранить изменения"
        {
            try
            {
                this.tbl_officerTableAdapter.Update(this.dataSet_DBGIS_ASU.Tbl_officer);
                MessageBox.Show("Изменения в базе данных выполнены!",
                  "Уведомление о результатах", MessageBoxButtons.OK);
            }
            catch (Exception)
            {
                MessageBox.Show("Изменения в базе данных выполнить не удалось!",
                  "Уведомление о результатах", MessageBoxButtons.OK);
            }
        }
    }

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