2014-09-10 3 views
-2

У меня есть 3 формыОткрыть одну форму и закрывать две формы

  1. frmDashboard
  2. frmMenu
  3. frmText

В FrmDashboard

frmText frmtext= new frmText(); 
frmtext.Show(); 

В FrmText

this.close(); // close FrmText 

frmMenu frmmenu = new frmMenu(); 
frmmenu.show(); // to show FrmMenu 

frmDashboard frmD = new frmDashboard(); 
frmD.Hide(); // didn't work 
frmD.dispose();// didn't work 
frmD.close();// didn't work 

Почему FrmDashboard не подходит? Пожалуйста, помогите мне. Я новый разработчик окон C#.

ответ

0

В FrmText вы создаете новую панель frmDashboard, но я понимаю, что вы хотите закрыть уже открытый экземпляр frmDashboard.

Добавить недвижимость frmText:

public frmDashboard formToClose {get; set; } 

При создании frmText, установите это свойство:

frmText frmtext= new frmText(); 
frmText.formToClose = this; 
frmtext.Show(); 

Затем, вы можете закрыть его внутри frmDashboard:

formToClose.Close(); 
0

Вы можете сохранить ссылку на объект, который является FrmDashboard, и просто вызвать that.close, когда вам нужно его закрыть.

Просто передайте его через конструктор и сохраните его экземпляр.

0

Вам нужно для получения ссылки на форму на другую форму, например

private frmDashBoard Dashboard; 
public frmText(frmDashBoard dash) 
{ 
    Dashboard = dash; 
} 

, то вы можете просто пойти

if (Dashboard != null) 
    Dashboard.Close(); 
0

Несколько вещей, чтобы думать о том:

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

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

this.Hide(); 
var frmMenu = new frmMenu(); 
frmMenu.Show(); 
frmMenu.Closed += (formSender, formEvents) => 
{ 
    this.Show(); 
}; 
Смежные вопросы