호기심에서 Window
의 생성자로 차례대로 FolderBrowserDialog
이라는 두 개의 다른 인스턴스를 표시 할 수 없지만 Window
의 Loaded
이벤트에서 수행 할 수 있는지 궁금합니다.Window 생성자에서 FolderBrowserDialog를 두 번 표시 할 수없는 이유는 무엇입니까?
- 는 예 1은 첫 번째 대화 (
fbd1
)를 표시하고 다음 중 하나를 표시하지 않습니다. - 예 2은 두 개의 대화 상자를 보여줍니다.
예 1 :
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
using (var fbd1 = new FolderBrowserDialog()) {
fbd1.ShowDialog();
}
using (var fbd2 = new FolderBrowserDialog()) {
fbd2.ShowDialog();
}
}
}
예 2 : 그런데
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e) {
using (var fbd1 = new FolderBrowserDialog()) {
fbd1.ShowDialog();
}
using (var fbd2 = new FolderBrowserDialog()) {
fbd2.ShowDialog();
}
}
}
, 나는 또한 윈폼에서 테스트 한,이 능력은 거의 동일합니다.
그것의 Load
의 이벤트 Form
'는 Form
의 생성자 및'에서 작동하지만, Shown
이벤트에서 작동하지 않습니다. 레자 Aghaei 그의 두번째 코멘트에서 말했다
'Form'의 생성자에'FolderBrowserDialog'가 2 개 표시되는 데는 문제가 없습니다. 주목해야 할 것은'ShowDialog'가 호출 될 때 대화 상자를 닫을 때까지 그 뒤에 나오는 코드가 실행되지 않는다는 것입니다. 첫 번째 문을 닫은 후에 두 번째 문구가 나타납니다. –
첫 번째 대화 상자를 닫으면 두 번째 대화 상자가 닫히지 만 현재 'Form'이 보이지 않고 작업 표시 줄에 표시되지 않기 때문에 두 번째 대화 상자가 활성화되지 않고 다른 창 뒤에 열립니다. 열려있는 창을 보려면 Alt + Tab을 누르면 두 번째 대화 상자가 나타납니다. 그러나 'Form'이 보이면 (예 :'Shown'에서 코드를 실행할 때)이 문제는 발생하지 않습니다. –
게시 한 코드가 정상적으로 작동합니다. 방해가되는 두 개의 대화 상자 사이에 다른 코드가있을 수 있습니다. – DavidG