Сентябрь 29th, 2012 § § Прямая ссылка
Переносил сегодня приложение на C#, которое активно работает с сетью на Mono, проверил совместимость с помощью Moma. Moma показала, что все окей, но приложение на Linux работало не корректно. После некоторого гугления выяснилось, что проблема в реализации работы с https, нужно явно указывать, что мы принимаем сертификат сервера. В функции инициализации нужно прописать.
System.Net.ServicePointManager.ServerCertificateValidationCallback+=delegate{
return true;
};
Профит.
Август 16th, 2012 § § Прямая ссылка
Всем привет, хочу поделится некоторым опытом использования EntityDataSource, а именно использования оператора LIKE к полю типа int в MS SQL при обычном запросе к с использование T-SQL запрос бы выглядел следующим образом
SELECT *FROM table1 WHERE CAST(UserId as NVARCHAR(10)) LIKE '1%';
этим запросом мы получим всех пользователей UserId у которых будет начинаться с единицы. Если вы попробуете ввести в EntityDataSource в условие Where такую же конструкцию то неминуемо получится Exception, что бы этого не произошло запрос нужно переписать в следующей форме
EntityDataSource1.Where = "CAST(UserId as System.String) LIKE '1%';"
Как видите здесь используются типы не MS SQL а типы C# так что при приведении одних типов к другим в EntityDataSource не забывайте о том что должны работать с типами C# внутренний механизм в EntityDataSource в последствии приведёт данные к соответствующему типу MS SQL.
Апрель 6th, 2012 § § Прямая ссылка
Если есть те кто работал в .NET и пытался сохранить файл в jpeg и после этого получал исковерканное сжатием изображение те поймут. Привожу класс расширитель взятый с просторов интернета так что пользуйтесь. В классе методы для изменения размера изображения без потери качества, сохранения изображения без потери качества и тд. Код ниже:
Continue reading “Очень полезный расширитель для работы с Image в .NET” »
Апрель 6th, 2012 § § Прямая ссылка
В последние дни намучился с этим классом и хочу поделится своим опытом, что бы вы не совершали моих ошибок, а совершали свои ))) Начнем, первое, что нужно это загрузить изображение вот наш первый и самый большой айсберг. У нас есть несколько простых способов как это сделать.
Image img = Image.FromFile("someimg.jpg");
FileStream fileStream = new FileStream("someimg2.jpg",FileMode.Open);
Image img2 = Image.FromStream(fileStream );
MemoryStream memStream = new MemoryStream(File.ReadAllBites("someimg3.jpg"));
Image img3 = Image.FromStream(memStream );
Continue reading “C# Image ExternalException и прочие превратности класса” »
Март 7th, 2012 § § Прямая ссылка
Задача тривиальна, но что бы не забыть выкладываю сюда
public static void CleanFilesAndDirectories(System.IO.DirectoryInfo directory)
{
foreach (System.IO.FileInfo file in directory.GetFiles()) file.Delete();
foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true);
}
Март 2nd, 2012 § § Прямая ссылка
Стояла такая задача, нашел элегантное решение на CodeProject, делюсь им.
public static byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
public static Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Cсылка на codeproject’e
Март 1st, 2012 § § Прямая ссылка
Подсмотрел на gotdotnet.ru способ как элементы СheckedListBox выделить цветом или другим шрифтом, решил поделится. Нужно создать свой контрол и унаследовать его от CheckedListBox, при этом переопределив метод OnDrawItem дело в том что он имеет атрибут [BrowsableAttribute(false)] и в режиме дизайнера доступа к нему нет, так что это следует сделать в ручную. Вот пример того как переопределив этот метод, мы подсвечиваем третий элемент в списке CheckedListBox.
public class UserCheckedListBox : CheckedListBox
{
protected override void OnDrawItem(DrawItemEventArgs e)
{
base.OnDrawItem(e);
if(e.Index==2)
{
DrawItemEventArgs e2 = new DrawItemEventArgs(e.Graphics,e.Font,e.Bounds,e.Index,e.State,Color.Red,e.BackColor);
base.OnDrawItem(e2);
}
}
}
Февраль 21st, 2012 § § Прямая ссылка
Если вы рисуете на форме или часто вызываете метод invalidate(), то форма начинает мигать, не вооруженным глазом видна перерисовка. Что бы устранить этот артефакт, добавьте в конструктор формы следующую строку
this.DoubleBuffered = true;
Февраль 16th, 2012 § § Прямая ссылка
Делал сегодня реализацию своих контролов в силу того что те задачи что ставились не могли решиться стандартным набором. Вкратце как это делается, создается класс, наследуемый от существующего контрола, либо от базового класса Control, в нем уже переопределяется поведение контрола. Все достаточно ажурно. Хотел бы еще сделать замечание как сделать контрол перетаскиваемым. В обработчик onMouseDown добавляем функцию DoDragDrop(obj,DragDropEffects.Move); obj – это тот объект, что мы будем передавать принимающей стороне. Принимающий контрол должен иметь свойство AllowDrop, установленное в true и в событие DragEnter должно содержать код
private void onDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
в событии DragDrop мы получим наш объект, остается его только распаковать из object в исходный объект.
Январь 20th, 2012 § § Прямая ссылка
Привожу четыре способа очистить StringBuilder.
Первый самый очевидный:
StringBuilder temp = new StringBuilder("SomeText");
//some code
temp = new StringBuilder();
Второй способ:
StringBuilder temp = new StringBuilder("SomeText");
//some code
temp.Remove(0,temp.Length);
Continue reading “Четыре способа очистить StringBuilder” »