messagebox를 닫으면 원래 대화 상자가 아닌 대화 상자가 활성화되는 이야기
1913 단어 VisualStudioWindowsC#WPF
어째서 그렇게 된다!
다른 사랑이 없다는 것이지만, 전혀 정보가 없었기 때문에 기록
일의 시작은 매우 평범한 화면 개발
평소처럼
messagebox의 공통 클래스를 넣어 (동료의 PG로부터 유용)
부모 (A) 화면을 만들고, 아이 (B) 화면을 만들고, 등 등
특히 문제없이 쉽게 완성!
그래서,
조금 테스트할까~
아이 (B) 화면에서 입력, 체크 NG, 오류 메시지가 나왔다. 클릭!
「응?」
부모 (A) 화면이 능동적으로 올라왔습니까? ? ?
어째서 그렇게 된다!
여러 번 해도 같아진다.
개발 환경이 이상한가?
windows 10 visualstudio2017 WPF .NETframework 4.5.2
(만약 visualstudio2010에서 해도 동일)
문제의 출처
class Class1
{
public static void errmsg(string text)
{
MessageBox.Show(text,"エラー",MessageBoxButton.OK,MessageBoxImage.Error,MessageBoxResult.OK,
MessageBoxOptions.DefaultDesktopOnly);
}
}
무엇을 하든,
어떻게든 시도하려고했습니다.
.Active()를 넣어 본다
좋지 않았습니다.
콜하고 있는 이벤트 후에 A가 액티브(화면의 톱)에 오는 느낌
topmost에서는 씨로 본다
안돼, 아니지만,,,
topmost는 확실히 B가 정상에 계속 있기 때문에 외형은 문제 없습니다.
하지만, 액티브는 A가 가지고 있기 때문에, 외형이, 조작적으로도 문제 개미
(topmost는 맨 위에 붙어 있기 때문에 무서운)
공통 모듈이 아닌 직접 쓰는
이것은 OK였다.
그러나 "공통화"하고 싶기 때문에 NG
또한, 어려운 패턴
한 번 직접 작성한 messagebox.show를 한 후,
공통화 된 messagebox이면 OK (자식 화면이 Active로)
(미리 이해)
결국 무엇이 문제인가 & 해결책
1. 부모로부터 show로 아이 다이얼로그를 기동하고 있다
2. 공통 모듈에서 messagebox.show
3.MessageBoxOptions.DefaultDesktopOnly를 켜고 있다
이러한 조건이 모이면 발생.
그래서
MessageBoxOptions를 붙이지 않으면 발생하지 않는다.
그건 그렇고
ServiceNotification에서도 발생하므로
이 옵션을 생략하는 것이 좋습니다.
돌진하고 조사하지 않았기 때문에,
「옵션을 붙이지 않는 것에 의한 폐해」는 조사하지 않았다
이상(모르는 소스를 유용하지 않으면 좋았다..)
Reference
이 문제에 관하여(messagebox를 닫으면 원래 대화 상자가 아닌 대화 상자가 활성화되는 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taka75taka/items/f8a3d0c3fb9d7ad079f5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여러 번 해도 같아진다.
개발 환경이 이상한가?
windows 10 visualstudio2017 WPF .NETframework 4.5.2
(만약 visualstudio2010에서 해도 동일)
문제의 출처
class Class1
{
public static void errmsg(string text)
{
MessageBox.Show(text,"エラー",MessageBoxButton.OK,MessageBoxImage.Error,MessageBoxResult.OK,
MessageBoxOptions.DefaultDesktopOnly);
}
}
무엇을 하든,
어떻게든 시도하려고했습니다.
.Active()를 넣어 본다
좋지 않았습니다.
콜하고 있는 이벤트 후에 A가 액티브(화면의 톱)에 오는 느낌
topmost에서는 씨로 본다
안돼, 아니지만,,,
topmost는 확실히 B가 정상에 계속 있기 때문에 외형은 문제 없습니다.
하지만, 액티브는 A가 가지고 있기 때문에, 외형이, 조작적으로도 문제 개미
(topmost는 맨 위에 붙어 있기 때문에 무서운)
공통 모듈이 아닌 직접 쓰는
이것은 OK였다.
그러나 "공통화"하고 싶기 때문에 NG
또한, 어려운 패턴
한 번 직접 작성한 messagebox.show를 한 후,
공통화 된 messagebox이면 OK (자식 화면이 Active로)
(미리 이해)
결국 무엇이 문제인가 & 해결책
1. 부모로부터 show로 아이 다이얼로그를 기동하고 있다
2. 공통 모듈에서 messagebox.show
3.MessageBoxOptions.DefaultDesktopOnly를 켜고 있다
이러한 조건이 모이면 발생.
그래서
MessageBoxOptions를 붙이지 않으면 발생하지 않는다.
그건 그렇고
ServiceNotification에서도 발생하므로
이 옵션을 생략하는 것이 좋습니다.
돌진하고 조사하지 않았기 때문에,
「옵션을 붙이지 않는 것에 의한 폐해」는 조사하지 않았다
이상(모르는 소스를 유용하지 않으면 좋았다..)
Reference
이 문제에 관하여(messagebox를 닫으면 원래 대화 상자가 아닌 대화 상자가 활성화되는 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taka75taka/items/f8a3d0c3fb9d7ad079f5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(messagebox를 닫으면 원래 대화 상자가 아닌 대화 상자가 활성화되는 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taka75taka/items/f8a3d0c3fb9d7ad079f5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)