24. September 2009 15:24
By
Flame
In
FAQ С# | WinForms
Для того что бы скачать файл по протоколу http на C# потребуется написать всего несколько строчек и подключить пространство имен System.Net.
Самый простой, но не самый наглядный способ.
Просто как две строчки написать:
WebClient webClient = new WebClient();
webClient.DownloadFile("http://mysite.com/myfile.txt", @"c:\myfile.txt");
Но никакого отображения процесса загрузки файла не происходит, что конечно же не устраивает нетерпеливых пользователей.
More...
8. September 2009 17:58
By
Flame
In
FAQ С#
Для реализации этой, казалось бы, тривиальной задачи идеально подходит рекурсия, например вот такая:
List<String> GetAllFiles(String aPath)
{
List<String> _tmpFiles = new List<string>();
_tmpFiles.AddRange(Directory.GetFiles(aPath));
foreach (String dirPath in Directory.GetDirectories(aPath))
{
_tmpFiles.AddRange(GetAllFiles(dirPath));
}
return _tmpFiles;
}
Но оказывается, в случае, когда требуется просто получить список файлов (не применяя сложных условий) стоит использовать уже реализованные функции, в частности перегруженный вариант функции Directory.GetFiles с тремя параметрами:
Directory.GetFiles(_strPath, "*.*", SearchOption.AllDirectories)
P.S. Не забываем подключить System.IO;
Currently rated 4.5 by 8 people
- Currently 4.5/5 Stars.
- 1
- 2
- 3
- 4
- 5
Tags: пример c#
7. August 2009 10:14
By
Flame
In
FAQ С#
Иногда возникает необходимость вставить изображение непосредственно в документ Excel, к сожалению именно в документ, по определенным координатам, а не в конкретную ячейку возможна вставка такого объекта. Далее описано два возможных способа программной вставки картинки.
More...
14. July 2009 10:02
By
Flame
In
FAQ С#
Если необходимо просто получить несколько записей из Excel файла, то стоит воспользоваться ранним связыванием. Для этого необходимо подключить Microsoft.Office.Interop.Excel.dll и Office.dll.
More...
28. June 2009 02:04
By
Flame
In
FAQ С#
Для того что бы прочитать данные из реестра Windows, например узнать куда установлен MapInfo, необходимо:
using Microsoft.Win32;
private String FRegisterKey = @"SOFTWARE\MapInfo\MapInfo\Professional"
private String FKeyValue = @"ProgramDirectory"
...
if (Registry.LocalMachine.OpenSubKey(FRegisterKey) != null)
{
InfoPath = Registry.LocalMachine.OpenSubKey(FRegisterKey).GetValue(FKeyValue).ToString();
...
}
Что бы записать значение:
Registry.LocalMachine.OpenSubKey([PathToSubKey]).SetValue([Param], [Value]);
P.S. Подробнее тут
Currently rated 4.0 by 1 people
- Currently 4/5 Stars.
- 1
- 2
- 3
- 4
- 5
Tags: пример c#
23. June 2009 17:06
By
Flame
In
FAQ С#
Для преобразования строки из одной кодировки в другую в .Net используется класс System.Text.Encoding.
Например, нам необходимо прочитать текстовый файл, но мы знаем, что текст в нем хранится в кодировке Win1251.
Вот пример как это можно сделать:
using (StreamReader _sr = new StreamReader(aFileInfo.FullName, Encoding.GetEncoding(1251)))
{
String _strTmp = _sr.ReadLine()
. . .
}
Но теперь надо сохранить изменения в тойже кодировке.
Это можно сделать вот так:
using (StreamWriter tw = new StreamWriter(aWriteFile.Create(), Encoding.GetEncoding(1251)))
{
// Записываем шапку
tw.WriteLine(String.Format("Проверка записи в кодировке Win1251"));
. . .
tw.Close();
}
P.S. Подробнее тут
P.P.S. И еще статья Джоела Спольски о кодировках
21. June 2009 10:11
By
Flame
In
FAQ С#
А конкретнее, как преобразовать строку в число или как заменить точку на запятую, например "2.56", если разделитель разрядов в системе запятая.
Мнимое решение
Double tmp = Double.Parse(str.Replace('.', ','));
т.к. если в системе по умолчанию установленна точка а не запятая то мы опять получим исключение.
More...
Currently rated 3.5 by 4 people
- Currently 3.5/5 Stars.
- 1
- 2
- 3
- 4
- 5
Tags: пример c#
16. June 2009 15:35
By
Flame
In
FAQ С#
Простым вариантом обновления программы может служить bat файл который будет копировать содержимое сетевой папки в локальную, но после него остается командное окно которое портит общий вид...
Альтернативным способом может быть копирование необходимых файлов самой программой при запуске, но заменить запущенное приложение не получится, поэтому необходимо вынести функциональность которая копирует файлы в отдельный проект и из него после копирования запускать основное приложение.
Сначала настроим глобальные переменные (правильнее их получать из xml файла)
#region Data
// Папка с обновлениями
private String FUpdateFolder = @"\\srv\myprog";
// Куда копируем
private String FTargetFolder;
// Что запускаем
private String FRunFile = "myprog.exe";
#endregion
More...
16. June 2009 12:34
By
Flame
In
FAQ С#
Для того что бы прочитать текстовый файл можно воспользоваться классом System.IO.StreamReader
FileInfo aFileinfo = new FileInfo(@“c:\test.txt”);
// Открываем поток для чтения
using(StreamReader _sr = aFileinfo.OpenText())
{
// Покуда есть что читать читаем построчно
while (_sr.Peek() > -1)
{
List<String> _strArrTrack = new List<string>(_sr.ReadLine().Split(','));
if (_strArrTrack.Count != 0)
{
// Обрабатываем данные
Int32 test = Int32.Parse(_strArrTrack[0]);
}
}
}
А так можно записать данные в текстовый файл
9. June 2009 09:53
By
Flame
In
FAQ С#
Как передвинуть форму с помощью мыши, если необходимо установить свойство FormBorderStyle в System.Windows.Forms.FormBorderStyle.None ?
Способ “В лоб”
private Int32 tmpX;
private Int32 tmpY;
private bool flMove = false;
private void frmMain_MouseDown(object sender, MouseEventArgs e)
{
tmpX = Cursor.Position.X;
tmpY = Cursor.Position.Y;
flMove = true;
}
private void frmMain_MouseMove(object sender, MouseEventArgs e)
{
if (flMove)
{
this.Left = this.Left + (Cursor.Position.X - tmpX);
this.Top = this.Top + (Cursor.Position.Y - tmpY);
tmpX = Cursor.Position.X;
tmpY = Cursor.Position.Y;
}
}
private void frmMain_MouseUp(object sender, MouseEventArgs e)
{
flMove = false;
}
More...