|
Программирование >> Автоматически обновляемые приложения
Установить фоновый цвет в родительской MDI-форме Если ваше приложение использует многодокументный интерфейс (MDI), то вам будет интересно узнать, как можно изменить фоновый цвет в родительской MDI-форме. Сначала создайте обычный проект и присвойте свойству BackColor формы нужный вам цвет, например, оранжевый (orange). Далее присвойте свойству isMDiContainer значение True. Обратите внимание, что при этом фон формы станет соответствовать цвету, определенному в системе для окна программы. Далее установите свойство windowstate в значение Maximized, чтобы ОКНО программы открывалось В раскрытом виде. Также добавьте в проект новую форму Form2, которая будет являться дочерним окном программы. Теперь, чтобы изменить фоновый цвет родительского MDI-окна программным способом, напишем следующий код (листинг 5.41) для события Load родительской формы. ; Листинг 5.41. Меняем фоновый цвет в MDI-форме private void Forml Load(object sender, EventArgs e) { MdiClient ctlMDI; Проходим через все элементы формы в поисках типа MdiClient. foreach (Control ctl in this.Controls) { Пытаемся привести элемент к типу MdiClient CtlMDI = (MdiClient)ctl; Устанавливаем цвет BackColor элемента MdiClient CtlMDI.BackColor = this.BackColor; Выводим дочернюю форму в окне родительской MDI-формы Form2 frm = new Form2(); f rm.MdiParent = this; frm.Show(); Примечание Пример находится в папке CommandLine на прилагаемом диске. Запрет на запуск второй копии приложения Многие приложения могут запускаться только в единственном экземпляре. Такова логика приложения. Например, программа Outlook Express запускается только в одном экземпляре. Чтобы реализовать эту функциональность в своем проекте, нам нужно воспользоваться классом Mutex в методе Main. Как это сделать, показано в листинге 5.42. i Листинг 5.42. Запуск ОДНОГо экземпляра приложения using System.Threading; static void Main() { bool oneonly; Указываем имя своей программы. В нашем случае My prog Mutex m = new Mutex(true, My prog , out oneonly); if (oneonly) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Forml()); Forml mainForm = new Forml () ; Application.Run(); else { MessageBox.Show( Это приложение уже запущено. ); Примечание Пример запрета на запуск второго экземпляра находится в папке Singleln-stance на прилагаемом диске. Примечание Пример работы с MDI-формой находится в папке MDIBackColor на прилагаемом диске. \ Листинг 5,43. Показ второй формы private void buttonl Click(object sender, EventArgs e) { Form2 form2 = new Form2(); forml является экземпляром класса Forml в Form2.cs, определенный как public form2.forml = this; Показьшаем форму Form2 form2.ShowDialog(); Переходим на форму Form2. Откроем редактор кода и напишем сразу после конструктора объявление переменной forml и далее напишем код, который будет выполняться при загрузке второй формы. Как передавать значения между формами Windows Forms Например, требуется передать текст из текстового поля одной формы в текстовое поле другой формы. Есть два способа передачи значений некоторых данных между формами. Рассмотрим оба варианта. Способ первый Добавим на форму текстовое поле и кнопку. Мы хотим, чтобы при нажатии на кнопку текст из текстового поля был передан на вторую форму. Первое важное замечание. Когда вы поместили на форму текстовое поле textBoxl, то оно по умолчанию имеет модификатор доступа private. Вам необходимо изменить этот модификатор на public, иначе вторая форма не сможет получить данные из первой формы. Для этого откройте код файла Forml.Designer.cs и измените одну строчку. private System.Windows.Forms.TextBox textBoxl; было no умолчанию public System.Windows.Forms.TextBox textBoxl; измененная строка Далее напишем код (листинг 5.43) для кнопки.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |