Ответы пользователя по тегу .NET
  • Как определить что элемент в рабочей области?

    @Sumor
    Поищите по ключевым словам treeview virtualization wpf
    В MSDN есть специальная статья: Повышение производительности TreeView
    Ответ написан
    Комментировать
  • Как из MainForm.cs вынести DllImport в другой файл?

    @Sumor
    Ну во-первых, вы можете создать отдельный статический класс и там всё прописать.
    А во-вторых, если вы всё-таки хотите, чтобы внешние функции всё-таки были в классе MainForm, то не зря в объявлении класса указано слово partial. Оно говорит, что вы можете описывать класс в нескольких файлах. Для этого можно создать новый файл, начать его также: public partial class MainForm, и в него вынести внешние функции.
    Ответ написан
    1 комментарий
  • Как сгруппировать данные в Observalble Collection и привязать их к DataGrid (C# + WPF)?

    @Sumor
    Если вам нужно сгруппировать исходные данные (показать по группам). То для этого есть механизм группировки, встроенной в WPF. Пример его использования описан в MSDN. Основная суть - вы описываете описываете CollectionViewSource, который в качестве источника берёт исходные данные, а затем в CollectionViewSource указываете свойство, по которому группировать. В DataGrid на входе указывается созданный CollectionViewSource. Дополнительно можно описать шаблон представления именно группированных данных.

    Если же вы хотите отображать именно список StatisticsModel. То для этого всего лишь надо в динамике присвоить свойству Source объекта DataGrid результат вашей последней конструкции this.statisticsCollection.GroupBy(...).Select(...)
    Ответ написан
    3 комментария
  • Как наложить несколько Bitmap на PictureBox?

    @Sumor
    Для рисования нужно использовать один из перегруженных методов DrawImage объекта Graphics у PictureBox.
    Ответ написан
  • Как сделать так, чтобы линии не перекрывали фигуры (Windows Forms)?

    @Sumor
    Собственно два варианта.
    1. Рисовать вершины в конце и заполнять их фоном через FillEllipse
    2. Так как размер вершины графа известен, то рисовать линии до границы вершины.
    Ответ написан
    3 комментария
  • Почему не открывается диалог WPF?

    @Sumor
    В целом, то что вы закрыли диалог совершенно не означает, что ваша длительная операция прервалась.
    backgroundWorker.CancelAsync(); всего лишь информирует задачу, что её прерывают. Внутри обработчика backgroundWorker должна быть специальная проверка свойства CancellationPending, при установке которого нужно выполнять выход из потока обработки.
    Закрытие формы не уничтожает поток с задачей - она будет выполняться, пока не дойдёт до конца.
    Скорее всего при повторном открытии формы у вас происходит конфликт с ресурсами, которые уже используются первым потоком обработки.

    Если смотреть дальше, то если вы выполняете длительную операцию на сервере, например, длительную хранимую процедуру, то даже закрытие приложения, которое запустило на выполнение эту хранимку, не гарантирует остановку процесса на сервере. Особенно, если процесс изменяет данные. В зависимости от логики сервера процесс может продолжиться до победного конца, может прерваться в какой-нибудь ключевой момент или уйти в длительный откат изменений, чтобы привести всё в состояние до запуска хранимки.
    Ответ написан
    Комментировать
  • Как остановить выполнение SqlCommand?

    @Sumor
    Cancel пытается отменить запрос и пытается передать это на SQLServer. Если запрос длительный и состоит из отдельных шагов, и эти шаги ещё на начали исполняться, то команда прервётся. Если идёт выдача, то она тоже может прерваться.
    Вам же, если вы прервались, не обязательно продолжать считывать - прерывайтесь, больше не вызывайте Read(), закрывайте reader и извещайте пользователя. При использовании BeginExecuteReader вы сможете проще организовать процесс ожидания и прерывания, но чуть сложнее процесс получения данных.

    В одном проекте я поступал несколько по-другому. Я быстро получал идентификаторы объектов, релевантных запросу, а затем спокойно в отдельном потоке начитывал строчки с данными (много медленных колонок). Процесс этот контролировался мной и мог прерваться в любой момент. В качестве бонуса получается правильный прогрессбар.
    Ответ написан
    Комментировать
  • Где найти примеры и материалы для самостоятельного освоения BeginExecuteReader?

    @Sumor
    А чем вам не нравится пример из MSDN?
    msdn.microsoft.com/ru-ru/library/1a674khd(v=vs.110...
    Вы можете проверять состояние IAsyncResult не в цикле, как в примере, а в таймере, попутно отображая прогресс выполнения.
    Ответ написан
    Комментировать
  • Есть ли в С# замена type паскаля?

    @Sumor
    Можно использовать такую конструкцию до объявления классов:
    using MyInt = System.Int32;
    Или, если класс не запечатанный(sealed), можно от него отнаследоваться:
    public class MyIntList : List<int>{}
    Ответ написан
    Комментировать