Re[3]: Одна форма над другой
От: tyger Россия  
Дата: 18.02.08 09:07
Оценка: 3 (1)
Здравствуйте, Dumka, Вы писали:

D>>>Подскажите, пожалуйста, как сделать так чтобы форма1 всегда находилась над (в смысле перед) формой2, но при этом, не была always on top для всех других окон (такой эффект получается если установить topmost = true для формы1).


D>Попробывал написать в обработчике загрузки верхней формы (mainForm — нижняя форма):


D>
D>MainForm mainForm = new MainForm();
D>Show(mainForm);
D>

D>Вылетает ошибка:
D>Form that is already visible cannot be displayed as a modal dialog box. Set the form's visible property to false before calling showDialog.
D>Все равно та же ошибка... В чем может быть дело?

Хм.
Вот в том месте, где у вас должна показаться "верхняя" форма делаем так:
Form topForm = new Form();
topForm.ShowDialog(this);//Предполагая, что this - это ваша mainForm.


т.е. в терминах Вашего первого вопроса:
Form форма1 = new Form();
форма1.ShowDialog(форма2);


Продолжая мысль, предполагаем, что у Вас есть главная форма Вашего приложения, называемая MainForm, наследник от Form.
Она создана и в данный момент выполняется. На этой форме существует некий Button, который выводит на экран диалоговое модальное окно, которое должно быть в топе. Тогда код можно представить так:
class MainForm:Form
{
...
Button essentialButton = new Button("click here");
...

essentialButton.Click += new System.EventHandler(essentialButton_ClickHandler);

void essentialButton_ClickHandler(object sender, EventArgs e)
{
    TopForm form = new TopForm();
    form.ShowDialog(this);
}
}

class TopForm:Form
{}
... << RSDN@Home 1.2.0 alpha rev. 784>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.