2014-11-14 2 views
0

MessageboxForm 클래스에서 상속 한 응용 프로그램에 사용했습니다. 그것은 내 기본 양식에 사용할 때 잘 작동합니다. 그러나 그 자체가 Show() 함수를 주 양식에서 팝업 된 양식에 사용하면 Messagebox은 두 번째 양식 아래에 숨겨 지므로 프로그램을 사용할 수 없게됩니다.ShowDialog() 뒤에 폼이 숨겨집니다.

전에 BringToFront() 기능을 사용하더라도 여전히 되돌아갑니다. 이것은 사용자 지정된 Messagebox의 Show() 기능입니다.

public static DialogResult Show(string message, string title) 
{ 
    _msgBox = new MsgBox(); 
    _msgBox._lblMessage.Text = message; 
    _msgBox._lblTitle.Text = title; 
    _msgBox.Size = MsgBox.MessageSize(message); 

    MsgBox.InitButtons(Buttons.OK); 
    //_msgBox.BringToFront(); 
    _msgBox.ShowDialog(); 
    return _buttonResult; 
} 

MsgBox는 클래스 자체의 이름입니다 : 내가 필요한 경우 해당 코드의 더 공유 할 수있는 내부 메시지 상자 클래스의 소유자 값을 전달하는

class MsgBox : Form 
+4

당신은 ShowDialog를 – Ahmad

답변

3

시도를

public static DialogResult Show(string message, string title, Form owner = null) 
{ 
    _msgBox = new MsgBox(); 
    _msgBox._lblMessage.Text = message; 
    _msgBox._lblTitle.Text = title; 
    _msgBox.Size = MsgBox.MessageSize(message); 

    MsgBox.InitButtons(Buttons.OK); 
    if(owner != null) 
     _msgBox.ShowDialog(owner); 
    else 
     _msgBox.ShowDialog(); 
    return _buttonResult; 
} 

기본 매개 변수를 사용하면 필요한 곳에서만 코드를 변경할 수 있습니다. 내가 조금이 동작을 설명 this question and its answers을 발견 조금 연구가

+0

에 소유자 양식을 전달할 수 있습니다 후

내가 이미 OP :(로했다! – Ahmad

+0

@ 스티브는 세상에! 이것은 내가 의미 내 응용 프로그램에서 함수의 모든 사용을 변경하고 그것에'owner' 매개 변수를 추가 할 수 있습니까? 메서드 서명을 변경하지 않고 동일한 변경을 수행 할 수있는 방법이 있습니까? 실제로 Show() 메서드에는 5 가지 버전이 있습니다 그래서 변경량을 5 배로 늘리십시오. – Disasterkid

+0

컨텍스트를 정확하게 알지 못하는 경우 기본 매개 변수를 사용하고 필요할 때만 변경할 수 있습니다. – Steve