Как запретить открытие формы с данными, если она уже отрыта другими

219
10 декабря 2017, 09:26

Есть список с данными. Нажимая 2 раза, открывается форма с этими детальными данными. Там есть идентификационный код или серия. Нужно запретить, открытие формы по идентификационному коду если она уже открыта.

Возможно ли это?

Answer 1

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

В любом случае, вам понадобится как-то опознавать с какими именно данными открыта форма/окно/контлол. Для этого нужно добавить публичное свойство, в котором будет возвращаться идентификатор для опознавания.

Далее можно использовать такой вариант:

  • При открытии форма регистрируется в словаре как открытая, с идентификатором в качестве ключа. (в этом месте возможны варианты в реализации, например использовать список дочерних форм, регистрация в котором происходит автоматически при открытии, но суть от этого не меняется)
  • Перед открытием новой проверяем, зарегистрирована ли форма в открытых.
  • Если зарегистрирована - выводим на передний план, если нет - создаем новую, регистрируем, открываем.
  • При закрытии удаляем регистрацию.
Answer 2

Возможно!

Принцип прост, нужен статичный Бул, при открытий нужного окна вы проверяете его состояние, если false делаете его true и открываете форму, ну а если он True то выводите сообщение, а при закрытий формы делаете обратно в false .

Надеюсь понятно что true - означает форма открыта и false - форма закрыта.

Answer 3

Определяем глобальный переменную список куда будем сохранять при открытии формы код и при закрытии удалять оттуда код.

internal static class GlobabalModule
{
    public static List<string> CodeList { get; set; }
    public static void InitList()
    {
        CodeList = new List<string>();
    }
}

Как объявить глобальную переменную уровня проекта

READ ALSO
Проблема с получением атрибутов XML C#

Проблема с получением атрибутов XML C#

Есть такой xml-документ:

244
Не могу найти логическую ошибку. C#, Игра - Connect Four

Не могу найти логическую ошибку. C#, Игра - Connect Four

Не пытался вникнуть в то что вы делаете там, но вот вам скрин с ошибками

250
Поиск и замена элемента в xml документе

Поиск и замена элемента в xml документе

Есть xml файл с множеством элеменотовСтроки выглядят так:

182