Предотвратите несколько экземпляров формы

Как я препятствую тому, чтобы Несколько форм открылись?

Я делаю .show на форме, но пользователь может нажать основную форму и кнопку снова, и другой экземпляр формы открывается.

6
задан JPJedi 1 February 2010 в 00:55
поделиться

5 ответов

Если я должен преобразовать кортеж в набор или список, чтобы иметь возможность сортировать их, какой смысл использовать кортеж в первую очередь?

В данном конкретном случае, вероятно, нет точки. Это не проблема, потому что это не один из случаев, когда вы бы рассматривали возможность использования кортежа.

Как вы указываете, кортежи незыблемы. Причины наличия неизменяемых типов относятся к кортежам:

  • эффективность копирования: вместо копирования неизменяемого объекта можно выполнить его псевдоним (привязать переменную к ссылке)
  • эффективность сравнения: при использовании копирования по ссылке можно сравнить две переменные, сравнивая местоположение, а не содержимое
  • : Вам нужно сохранить не более одной копии любого неизменяемого значения
  • нет необходимости синхронизировать доступ к неизменяемым объектам в параллельном коде
  • const correctivity: некоторые значения не должны изменяться. Это (по мне) главная причина непреложных типов.

Обратите внимание, что конкретная реализация Python не может использовать все вышеперечисленные функции.

Ключи словаря должны быть неизменяемыми, в противном случае изменение свойств ключевого объекта может привести к недействительности инвариантов базовой структуры данных. Таким образом, кортежи могут потенциально использоваться в качестве ключей. Это следствие конст-верности.

См. также « Введение кортежей » из Погружение в Питон .

-121--2014926-

Proxomitron имеет возможность изменять заголовки для IE и его свободного

-121--1888783-

Я предпочитаю использовать Generics и ленивую загрузку для обработки моих форм. Поскольку все мои формы наследуют от базового класса, Я могу использовать тот же метод для вывода форм на передний план, отправить их сзади, уничтожить, запустить и т. д.

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

public void LoadForm<T>() where T : MyNameSpace.MyBaseForm 
{
    // Load all your code in this joint and just call it when you
    // need a form. In here, you can determine if a copy of the form
    // already exists and then bring it forward or not
} 
0
ответ дан 17 December 2019 в 04:46
поделиться

Два варианта, в зависимости от того, что вам нужно:

  1. Использование ShowDialog Вместо показывают , который откроет модальное окно. Это очевидное решение, если вам не нужна ваша основная форма, чтобы быть активным, пока дочерняя форма открыта.

  2. Или отслеживать окно, которое вы открыли уже в основной форме и ничего не делайте, если он уже открыт. Это будет необходимо, если вы хотите, чтобы пользователь мог использовать основную форму, когда дочерняя форма уже открыта, возможно, для открытия других форм.

2
ответ дан 17 December 2019 в 04:46
поделиться

сделать что-то вроде:

SingleForm myform = null;

void ShowMyForm_Click(object sender, EventArgs e) 
{     if (myform == null)
       {
             myform = new SingleForm();  
        } 
       myform.Show();
       myform.BringToFront(); 
 }
2
ответ дан 17 December 2019 в 04:46
поделиться

Заставить свой объект формы придерживаться рисунка Singleton

1
ответ дан 17 December 2019 в 04:46
поделиться

Отключить главную форму, пока дочерняя форма не исчезнет, ​​или отключите кнопку.

button_onClick(object Sender, EventArgs e)
{
   Button   btn = sender as Button;
   btn.Enabled = false;
   Form myform = new MyForm();
   myform.Show();
}

Конечно, вам действительно следует использовать form.ShowDialog () , а не form.Show () , если вы хотите модальное поведение.

0
ответ дан 17 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: