2011-02-10 4 views

ответ

0

Используйте пересылку Show (owner), чтобы получить форму B поверх A. Вам нужно будет установить размер и местоположение в событии Load, чтобы вы могли быть уверены, что это точно правильный размер даже после масштабирования. И выслушайте событие LocationChanged, чтобы вы могли также перемещать нижнюю форму. Это хорошо работает, за исключением нескольких интересных минимизирующих эффектов на Win7.

private void button1_Click(object sender, EventArgs e) { 
     var frmB = new Form2(); 
     frmB.StartPosition = FormStartPosition.Manual; 
     frmB.Load += delegate { 
      frmB.Location = this.Location; 
      frmB.Size = this.Size; 
     }; 
     frmB.LocationChanged += delegate { 
      this.Location = frmB.Location; 
     }; 
     frmB.Show(this); 
    } 
+0

Я не знаю C# :( –

+0

Ну, используйте текст моего ответа вместо фрагмента. –

2

Когда вы позвоните по номеру ShowDialog, пройдите форму, в которой вы хотите, чтобы она была перед параметром ShowDialog.

+0

Есть ли другой гибкий метод? –

+1

@abcdefghijklmnopqrstuvwxyz, Можете ли вы объяснить, почему это не работает для вас? Вы показываете формы по-другому? –

+0

Потому что он говорит, что мне нужно установить enabled = true, но мои формы уже включены –

Смежные вопросы