2015-10-16 4 views
0

Ранее то, что я сделал это:Проблема сокрытия формы C#

this.Hide(); 
Newform a = new Newform(); 
a.Show(); 

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

Форма просто ждет ввода usb и переходит к следующему окну. (без кнопки). Это мой код

private void Usbauthentication_Load(object sender, EventArgs e) 
{ 
    Usbdetected(); 
    try 
    { 
    watcher.EventArrived += new EventArrivedEventHandler(this.WaitForUSBChangeEvent); 
    watcher.Query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2"); 
    watcher.Start(); 
    } 

    catch (ManagementException a) 
    { 
     Console.WriteLine(a); 
    } 
} 

public void WaitForUSBChangeEvent(object sender, EventArrivedEventArgs e) 
{ 
    this.Usbdetected(); 
} 

public void Usbdetected() 
{ 
    list = conn.Select(); 
    for (int i = 0; i < drives.Count(); i++) 
    { 
     drivelist.Add(drives[i].Name.Replace(@"\", "")); 
     if (list.Contains(usb.getSerialNumberFromDriveLetter(drivelist[i]))) 
     { 
      store = i; 
      this.Hide(); 
      Login a = new Login(); 
      a.Show(); 
      break; 
     } 
    } 
} 

PS: Извините за беспорядок, Пожалуйста, помогите мне.

+0

Если вы отступаете от своего кода, его легче будет читать люди. – David

+0

Вы показываете только форму, если условие истинно. Вы на 100% уверены, что это условие вернулось? –

+0

Простите, я пытаюсь настроить код много раз, чтобы позволить системе принять мой код, но кажется, что ему нужно 4 пробела перед отправкой, я попробую еще раз – flashlim

ответ

0

Что-то вроде этого следует сделать трюк:

var form2 = new Form2(); 
      form2.Shown += (o, e) => this.Hide(); 
      form2.Show(); 

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

form2.FormClosed += (o,e) => this.Close(); 

Итак во всем, что вам нужно написать:

Newform a = new Newform(); 
    a.Shown += (o, e) => this.Hide(); 
    a.FormClosed += (o, e) => this.Close(); 
    a.Show(); 
+0

Спасибо! оно работает! Но у меня есть немного вопросов относительно функции наблюдателя, я использую функцию watcher для мониторинга, если какой-либо правильный USB-модуль подключен к компьютеру для проверки, а затем откройте для меня страницу входа. Но когда он обнаружил правильный USB, он снова открывает страницу входа в систему (без остановки), пока я не остановлю программу. Любая идея, как остановить наблюдателя, чтобы сделать это? – flashlim

+0

Я пробовал watcher.WaitForNextEvent(), и он действительно открыл одно окно, но курсор постоянно вращается, а я указываю на новое окно (кажется, это постоянная загрузка). – flashlim

+0

Прежде чем открыть экран входа в систему, вы можете вызвать watcher.Stop()? Это должно предотвратить постоянное вращение, которое вы описали. –