Архив категорий: C#

Добавление логирования хода выполнения программы

Доброго времени суток! Эта статья носит справочный характер. В ней приведен пример (своего рода quick start) использования логера log4net в программе на C# (пока без дополнительных разъяснений).

В первую очередь, нужно добавить в проект своей программы log4net.dll в качестве reference (описание того как это делается, выходит за рамки данной статьи). После чего, нужно выполнить ряд действий описанных ниже.

Шаг 1. Создать основной класс, отвечающий за обеспечение логирования в своем проекте: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net;
using log4net.Config;

namespace TestLog
{
   public static class Logger
   {
      private static ILog log = LogManager.GetLogger("LOGGER");
      
      //Возвращает объект, через который будет осуществляться логирование
      public static ILog Log
      {
          get { return log; }
      }

      //Инициализация логера
      public static void InitLogger()
      {
          //Считывание конфигурации логера из файла
          XmlConfigurator.Configure(new System.IO.FileInfo("D:\\Logs\\TestConf.xml"));
      }
 }
}

Как сделать невидимым элемент графического интерфейса в C#

Визуальное скрытие элементов графического интерфейса

Всем доброго времени суток! В этой статье я расскажу о том, как можно скрывать (делать невидимыми для пользователя) элементы графического интерфейса, например, кнопки, или поля ввода текста. Скрывать элементы интерфейсы в Windows Forms приложениях можно как до компиляции приложения, так и после этого (во время выполнения приложения). При этом, скрытые элементы интерфейса, в дальнейшем, можно сделать видимыми, что дает программисту возможность создавать более удобные в использовании приложения.

Скрываем кнопку до компиляции приложения

Форматирование даты и времени в C#

Доброго времени суток! Эта статья является продолжением той, в которой я рассказывал как можно получить текущее время в программе, написанной на C#… Статья будет содержать справочную информацию. А если конкретнее, то я расскажу о форматировании даты/времени при выводе (а точнее, преобразовании в строку). Сначала я приведу примеры стандартных вариантов форматирования (эти варианты могут закрыть большинство Ваших потребностей), а во второй части, я коснусь пользовательских (кастомных) вариантов форматирования (дающих большее свободы программисту).

Как узнать текущее время в C#

Доброго времени суток! Эта статья будет короткой, но тем не менее, вопрос которому она посвящена достаточно часто встречается у начинающих программистов. А расскажу я в этой статье как можно узнать (получить) текущее время в программе, написанной на C#. Ну а чтобы эта статья не была уж очень короткой,  я немного затрону и вопрос форматирования даты/времени при выводе пользователю (отображении). А теперь приступим к делу. Ниже приведен код консольной программы, которая получает текущие дату и время и выводит их в консоль. Посмотрев на этот код Вы поймете, насколько это просто…

C#. Форматирование строк. Преобразование числа в строку.

Доброго времени суток! В этой статье я расскажу (а скорее покажу) как в C# можно преобразовать число в строку, применяя при этом форматирование. Форматирование применяют, чтобы добиться определенных нюансов, например, ограничить количество символов после запятой в десятичной дроби и т.п.  В этой статье, я постараюсь сделать уклон исключительно на практику. И так, приступим…

Первым делом, я покажу как можно просто преобразовать число в строку. Точнее, я покажу один из нескольких способов. По сути, он заключается в вызове метода «ToString()» на целочисленной переменной. Всё элементарно, см. код ниже:

C#. Использование буфера обмена. Часть 1.

Доброго времени суток! В этой статье я познакомлю Вас с возможностями использования буфера обмена операционной системы, которые предоставляет язык программирования C#. Данной теме я планирую посвятить несколько статей, поэтому в первой (той, которую Вы сейчас читаете) я расскажу о самых основных моментах, но которых может хватить  пожалуй в 90% случаях с которыми вы столкнетесь. Вы узнаете как записать (поместить) текст в буфер обмена, как извлечь текст из буфера обмена, как очистить буфер обмена и т.п. И так, можно сказать что буфер обмена есть не что иное как промежуточное хранилище, в которое помещаются определенные данные, когда пользователь операционной системы копирует (Ctrl+C)/вырезает (Ctrl+X) какую-либо информацию (будь то текст из текстового редактора, или группа файлов из каталога и т.п.).

Оптимизация пузырьковой сортировки. Реализация на C#.

Сортировка пузырьком

Доброго времени суток! В этой статье я расскажу о простой оптимизации алгоритма пузырьковой сортировки (bubble sort), пример простейшей реализации которого я приводил в предыдущей статье (рекомендую прочесть, чтобы понять суть данной стать). Идея данной оптимизации заключается в сокращении избыточных итераций, т. е. поочередных переборов элементов исходного массива. Работать (давать положительный результат) данная модификация алгоритма будет только в том случае, когда избыточные итерации действительно присутствуют (например, попался почти отсортированный массив). Ниже, приведен результат выполнения программы из предыдущей статьи, с массивом, который практически отсортирован. В консоль выводится массив до сортировки, и после каждого перебора его элементов (и видные перестановки его элементов, выполненные во время каждой из итераций).

Пузырьковая сортировка. Реализация на C#.

Сортировка пузырьком

Доброго времени суток! В этой статье я расскажу об алгоритме сортировки массивов, достаточно простом и не самом эффективном (причем, далеко не самом), но тем не менее, для изучения базовых алгоритмов (в данном случае сортировки), разобрать его будет весьма полезно для начинающих программистов. Сортировка, реализованная по данному алгоритму, называется «пузырьковая сортировка» (bubble sort).

И так, пузырьковая сортировка относится к так называемым сортировкам обменами. Основная идея заключается в последовательных, и многократных переборах всех элементов массива, с сравнением смежных элементов (первый со вторым, второй с третьим, третий с четвертым и т.д.). При этом, если сравниваемые (смежные) элементы массива не отсортированы относительно друг друга, то они меняются местами.

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

Таймер. Работа с таймером в C#

Доброго времени суток! В этой статье я расскажу об использовании таймера в программах, написанных на C#, а в конце мы напишем простейшую программу часы. Статья будет практического характера и для её понимания Вам нужно владеть начальными знаниями программирования на языке C# и работы с WindowsForms приложениями. Но сначала, я расскажу для чего же нужны таймеры в программах. Чаще всего, таймеры используют для периодического вызова определенного метода (подпрограммы). У компонента «Timer» есть специальное (и единственное событие) — «Tick». Вот обработчик этого события, далее обработчик таймера, и вызывается с заданной программистом периодичностью.

Как я уже сказал, рассказ о таймерах будет в контексте WindowsForms. Так что я предлагаю создать новый проект приложения с графическим интерфейсом (WindowsForms). После чего, на главную форму из панели инструментов перенести компонент «Timer». Расположение компонента «Timer» в панели инструментов показано на рисунке ниже.

«Пустые» значения в C#

Доброго времени суток! В этой статье я расскажу об использовании так называемых «пустых» или «неопределенных» значений для различных сущностей наших программ, написанных на C#. «Пустое» (или «неопределенное») значение задается какой-либо переменной тогда, когда программисту неизвестно, какое значение должна принимать эта переменная на данном шаге выполнения программы, а установка любого другого («конкретного») значения недопустимо.

Например, наша программа получает из «внешнего мира» (базы данных, по сети, или от пользователя с клавиатуры, или еще каким-то образом) некое значение, и есть два сценария развития событий:

  • первый, это когда значение получено (например, пользователь ввел значение);
  • второй, когда значение не получено (пользователь отказался вводить значение, и перешел к следующему шагу).