2009-11-18 6 views

답변

30

는 아무 Button.DialogResult 내장되지 않습니다,하지만 당신은 만들 수 있습니다 (만약 당신이 좋아하면) 단순 연결된 속성 사용하여 자신의 :

public class ButtonHelper 
{ 
    // Boilerplate code to register attached property "bool? DialogResult" 
    public static bool? GetDialogResult(DependencyObject obj) { return (bool?)obj.GetValue(DialogResultProperty); } 
    public static void SetDialogResult(DependencyObject obj, bool? value) { obj.SetValue(DialogResultProperty, value); } 
    public static readonly DependencyProperty DialogResultProperty = DependencyProperty.RegisterAttached("DialogResult", typeof(bool?), typeof(ButtonHelper), new UIPropertyMetadata 
    { 
    PropertyChangedCallback = (obj, e) => 
    { 
     // Implementation of DialogResult functionality 
     Button button = obj as Button; 
     if(button==null) 
      throw new InvalidOperationException(
      "Can only use ButtonHelper.DialogResult on a Button control"); 
     button.Click += (sender, e2) => 
     { 
     Window.GetWindow(button).DialogResult = GetDialogResult(button); 
     }; 
    } 
    }); 
} 

이 당신이 쓸 수 있습니다 :

을 윈폼에
<Button Content="Click Me" my:ButtonHelper.DialogResult="True" /> 

얻을 행위에 해당

+0

나는 herer에서 새로운 것을 배웠습니다.이 attatching, eventho는이 경우에 그것을 사용하지 않을 것이고, 유용 할 것입니다! 고마워요. – Shimmy

+0

GetWindow func에 대해 전혀 알지 못했습니다. – Shimmy

+0

훌륭한 솔루션, 그 단순함이 더 커졌습니다. –

17

WPF에 Button.DialogResult이 없습니다. 그냥 당신이 ShowDialog보다는 Show 사용하여 양식을 표시했는지 확인

private void buttonOK_Click(object sender, RoutedEventArgs e) 
{ 
    this.DialogResult = true; 
} 
+2

@ Shimmy : 이것은 실제로 받아 들여야합니다 .. – Mangesh

1

: 당신은 true 또는 false로 WindowDialogResult을 설정해야합니다. 당신이 후자를 할 경우 다음과 같은 예외를 발생 얻을 것이다 :

InvalidOperationException이는 창을 작성하고 대화로 표시 한 후에 만 ​​처리되지 않은

DialogResult를 설정할 수 있습니다이었다.

-4
(버튼을 클릭 지정된 결과를 닫고 돌아 대화 상자를 발생) 0
+2

'MessageBoxResult result = new MessageBoxResult();'ll'd – Will

+0

이 코드는 작동하지 않습니다 ...'MessageBox.Show ("", "");'예 버튼을 표시하지 않습니다. – qJake