Показаны сообщения с ярлыком c#. Показать все сообщения
Показаны сообщения с ярлыком c#. Показать все сообщения

четверг, 15 января 2015 г.

Корректное закрытие Excel в приложении на C#

Если вы заметили, что после закрытия приложения в процессах висит процесс Excel, значит вы не правильно закрываете книгу Excel. Вот корректный вариант:

_excelAppWorkBook.Close(0);
_excelApp.Quit();

где:

_excelAppWorkBook — конкретная книга;
_excelApp — приложение Excel.

четверг, 4 декабря 2014 г.

Автоинкремент билда в C#

Для добавления номера билда в программу на C# необходимо:

В файле AssemblyInfo.cs:

[assembly: AssemblyVersion( "1.0.*" )]
[assembly: AssemblyFileVersion( "1.0.*" )]

Затем в нужном месте считываем номер билда:

Assembly.GetExecutingAssembly().GetName().Version.ToString()

и он при каждой компиляции будет увеличиваться.

вторник, 9 апреля 2013 г.

Как программно создать БД Access?

Это очень просто! Всего 2 шага:

  1. Добавить в проект ссылку на Microsoft.Office.Interop.Access
  2. Microsoft.Office.Interop.Access.Application app = new Microsoft.Office.Interop.Access.Application ( );
    app.NewCurrentDatabase ( path_to_db );
    

    где path_to_db — путь к создаваемой базе данных Microsoft Access.

понедельник, 25 марта 2013 г.

Как контролу ToolStrip уменьшить ширину?

Чтобы элементу управления ToolStrip задать произвольную ширину, необходимо установить свойству Dock значение None. А затем уже как обычно задать ширину.

суббота, 23 марта 2013 г.

Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере

Есть компьютер с 64-битной виндой. В свойствах проекта Visual Studio установлена конечная платформа x64. Необходимо подключиться к базе данных Access. Открытие подключения показано ниже:

OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path_to_db);
      
cn.Open();

где path_to_db — путь к файлу с базой данных Access.

При попытке открытия подключения возникает ошибка:

Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере

Поискав в Интернете, нашел только следующее решение проблемы — в свойствах проекта установить конечную платформу x86:

Проект -> Свойства -> Построение -> Конечная платформа -> x86

Вообще, Access не лучший выбор для используемой СУБД. Лучше перейти на использование бесплатной SQLite.

четверг, 7 марта 2013 г.

AutoSizeRowsMode и адские тормоза

Время отрисовки грида зависит кроме всего прочего, еще и от того, как определяется высота строк.

В варианте ниже жуткие тормоза из-за того, что идёт расчёт высоты всех строк. Если строк много, то этот расчёт может оказаться долгим.

grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

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

grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;

пятница, 25 января 2013 г.

Программное объединение ячеек в Excel на C#

В задачах выгрузки данных в Excel часто бывает необходимо объединять диапазоны ячеек. Как это сделать показано ниже:

// Выделяем диапазон ячеек от A1 до A10         
Excel.Range _excelCells = (Excel.Range)_excelWorkSheet.get_Range("A1", "A10").Cells;

// Производим объединение
_excelCells.Merge(Type.Missing);

где _excelWorkSheet — лист Excel, типа Excel.Worksheet.

понедельник, 17 декабря 2012 г.

Как в DataGridView сделать активной нужную строку?

«Выделенная» строка в DataGridView и «активная» строка — разные понятия. Выделенная строка может быть не активной. Для того, чтобы сделать активной нужную строку, необходимо записать:

this.grid.CurrentCell = this.grid.Rows[ i ].Cells[ 0 ];

где i — номер нужной строки.

суббота, 15 декабря 2012 г.

Как получить id добавленной записи в PostgreSQL

В PostgreSQL это очень просто. Нужно всего лишь добавить к запросу returning id. Вот пример:

string sql = "insert into city (name) values('Нижний Новгород') returning id;"

NpgsqlCommand cmd = db.cn.CreateCommand ( );
cmd.CommandText = sql;

int id = Convert.ToInt32( cmd.ExecuteScalar() ); 

среда, 12 декабря 2012 г.

Автоподбор высоты строки в DataGridView

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

this.grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

четверг, 6 декабря 2012 г.

ComboBox и значение null

Бывают случаи, когда в ComboBox'е необходимо отобразить значение типа null. Для этого нужно указать:

this.comboBox.SelectedIndex = -1;