Рубрика 'C# (C Sharp)'

По каким-то причинам Microsoft решила сделать класс Dictionary< (TKey, TValue>) не поддерживающим XML-сериализацию.

Т.е. код типа:

1
2
3
4
5
6
7
8
Dictionary<int , string> dict = new Dictionary</int><int , string>();
dict.Add(1, "aa");
dict.Add(2, "bb");
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Dictionary</int><int , string>));
using (FileStream fs = new FileStream("test.xml", FileMode.CreateNew))
{
    xmlSerializer.Serialize(fs, dict);
}</int>

выполняться не будет. Будет отображаена информация об ошибке вида:

«Тип System.Collections.Generic.Dictionary`2[.] не поддерживается, т.к. он реализует IDictionary.»

Такой расклад нас не устраивает…
Читать далее...

5th Фев 2017
Теги:

ToolStripTextBoxЦветная рамка (border color) для элемента ToolStripTextBox по умолчанию отсутствует.

Есть только черная рамка по типу, может быть или не быть.

Меня это в корне не устраивало и погуглив и перепробовав дюжину вариантов, я нашел 1 самый простой вариант отрисовки цветной рамки..

Для начала я добавил на форму элемент StripTextBox и именем tsFindbyName:

1
private System.Windows.Forms.ToolStripTextBox tsFindbyName

В данном случае свойство BorderStyle можно установить в None.

Далее необходимо создать метод и привязать его к событию перерисовки элемента StripTextBox - Paint.

Читать далее...

28th Ноя 2016
Теги:

Элемент управления System.Windows.Forms.ComboBox позволяет запомнить в себе список текстовых элементов, и предоставить выбор одного из элементов для пользователя.

Неочевидно, что основное поведение ComboBox зависит от свойства DropDownStyle. Имеется 3 варианта на выбор:

ComboBox

Элементы в списке доступны программно  через свойство ComboBox.Items. Количество элементов в списке можно получить через ComboBox.Items.Count. Добавлять элементы можно методом ComboBox.Items.Add, удалять методами Remove и RemoveAt. Текущий отображаемый элемент Items можно программно поменять через значение свойства SelectedIndex.

Читать далее...

12th Авг 2016
Теги:

В начале стоит определиться что такое snippet и для чего они нужны.

Фрагменты кода IntelliSense (они же snippet-ы) — это предварительно созданные готовые части кода, которые можно вставить в приложение в Visual Studio. Фрагменты кода повышают производительность за счет сокращения времени, затрачиваемого на ввод повторяющихся частей кода и поиск примеров. С помощью схемы XML фрагментов кода IntelliSense вы можете создавать собственные фрагменты и добавлять их к фрагментам, которые уже есть в Visual Studio.

Проще говоря, snippet – это шаблон (заготовка) кода, например определение свойства, определение метода, определение класса и т.д. При вставке фрагмента кода, например Exception, IntelliSense позволяет не только получить шаблон, но и автоматически выполняет изменение однотипных элементов, например имя класса.

Как работать со сниппетами? Для этого доступно несколько вариантов:

  1. набрать известное имя сниппета и нажать tab;
  2. нажать сочетание клавиш Ctrl+k+x для вывода списка всех зарегистрированных сниппетов;
  3. использовать контекстное меню, выбрав вставить фрагмент или разметить фрагмент.

Первый вариант наиболее удобен (при наличии знаний о snippet-ах IntelliSense): можно набрать, к примеру «prop», нажать tab и мгновенно получить шаблонное определение свойства класса. Вполне естественно, что такой механизм чрезвычайно полезен. Он экономит время, позволяя определять заранее отформатированный код с возможностью удобной кастомизации. Возможно, это никак не повлияет на работу вашей программы, но добавит вам некоторую порцию удовольствия от процесса кодирования. Еще больше пользы можно получить делая свои сниппеты.

Читать далее...

29th Июл 2016
Теги:

Привожу пример кода, который выполняет поиск атрибута "source" в файле XML, который содержит путь к корневой папке, на основании которой построена структура XML.

Смысл кода в следующем:

  • отрывается файл,
  • выполняется перебор веток,
  • выполняется проверка, что ветка - является элементом, т.е. мы пропускаем заголовок XML
  • дальше мы проверяем наличие атрибутов в ветке,
  • если атрибут не пустой, то цикл завершен.

Несмотря на кажущуюся громоздкость, код выполняется достаточно быстро.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
XmlDocument doc = new XmlDocument();
doc.Load(RecordCollection.BaseName);       
string SourceValue = "";
 
foreach (XmlNode xmlNode in doc.ChildNodes)
{
	if (xmlNode.NodeType == XmlNodeType.Element) // Проверка ноды, что это элемент
	{
		foreach (XmlAttribute xmlattribute in xmlNode.Attributes)
		{
			if (xmlattribute.Name == "source") SourceValue = xmlattribute.Value; // Поиск атрибута "source"
			if ((SourceValue != null) && (SourceValue.Length != 0)) break;
		}
	}
}
27th Июл 2016
Теги:

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

Для того чтобы посмотреть и поменять версию сборки программы в процессе ее разработки, можно пойти двумя путями:

  1. в главном меню выбрать Проект -> Свойства:проекта… -> Приложение -> кнопка "Сведения о сборке…" -> поле "Версия сборки".
  2. щелкнув правой кнопкой мыши по проекту в окне Обозреватель решений, в контекстном меню выбрать Свойства:проекта… -> Приложение -> кнопка "Сведения о сборке…" -> поле "Версия сборки".

Будет отображено окно, содержащее общие сведения о текущем проекте.

Скриншот ниже.

Сведения о сборке

Читать далее...

27th Июл 2016
Теги:

Недавно столкнулся с такой задачкой.

В основной форме программы (в файле MainForm.cs) сформировалось достаточно большое количество кода. Я решил, что было бы неплохо, разделить по файлам код относящейся непосредственно к самой форме, например методы обработки кнопок, меню и т.д. и сам исполнительный код, используя возможности разделяемых классов - Partial Class .

Для решения этой задачи в обозревателе решений Visual Studio необходимо создать файл MainForm.implementation.cs. Результат создания представлен на скриншоте ниже.

Visual Studio - Обозреватель решений - MainForm

В данный момент файл MainForm.implementation.cs ни логически, ни физически не имеет отношения к форме MainForm.

При этом файл был создан и размещен в той же папке, что остальные файлы.

Размещение файлов в папке Form

Для логического отображения файла в составе формы, необходимо перейти к Visual C# Project file (с расширением .csproj). Файл решения и файл проекта обычно расположены в корневой папке.

Читать далее...

26th Июл 2016
Теги:
Загрузка Все права защищены © 2017 ИТ-Инженер (Краснодар)
 
把手拿回