2009-08-11 31 views

Trả lời

114

Đặt mã vào số Window và gọi Window.ShowDialog.

private void Button1_Click(object sender, EventArgs e) 
{ 
    Window window = new Window 
    { 
     Title = "My User Control Dialog", 
     Content = new MyUserControl() 
    }; 

    window.ShowDialog(); 
} 
+9

Tôi cũng thấy rằng việc thiết lập SizeToContent = SizeToContent.WidthAndheight và ResizeMode = ResizeMode.NoResize là hữu ích để nó cho phép người dùng điều khiển xác định kích thước. –

+2

Làm thế nào chúng ta có thể sử dụng hàm 'this.Close()' cho Hộp thoại UserControl này? –

+1

private void btnClose_Click (đối tượng người gửi, RoutedEventArgs e) { \t var parent = this.Parent as Window; \t if (parent! = Null) \t { \t \t parent.DialogResult = true; \t \t parent.Close(); \t} } –

2

Theo như tôi biết bạn không thể làm điều đó. Nếu bạn muốn hiển thị nó trong một hộp thoại, điều đó hoàn toàn ổn, chỉ cần tạo một Cửa sổ mới chỉ chứa UserControl của bạn và gọi ShowDialog() sau khi bạn tạo một cá thể của Cửa sổ đó.

CHỈNH SỬA: Lớp UserControl không chứa phương thức ShowDialog, vì vậy những gì bạn đang cố gắng thực hiện là không thể.

này, tuy nhiên, là:

private void Button_Click(object sender, RoutedEventArgs e){ 
    new ContainerWindow().ShowDialog(); 
} 
-1

Nếu câu trả lời của 'sixlettervariables' được sửa đổi như vậy, nó hoạt động

private void button1_Click (object sender, RoutedEventArgs e)     
{ 
    Window window = new Window 
    { 
     Title = "My User Control Dialog", 
     Content = new UserControl (), 
     Height = 200, // just added to have a smaller control (Window) 
     Width = 240 
    }; 

    window.ShowDialog (); 
} 
+9

Bạn quên 'Bối cảnh = Bàn chải.Đơn vị'; nó sẽ không hoạt động nếu không có điều đó. –

7
Window window = new Window 
      { 
       Title = "My User Control Dialog", 
       Content = new OpenDialog(), 
       SizeToContent = SizeToContent.WidthAndHeight, 
       ResizeMode = ResizeMode.NoResize 
      }; 
      window.ShowDialog(); 

Đã làm việc giống như một ma thuật đối với tôi. Nó có thể được tạo thành một hộp thoại phương thức không?


Ans: ShowDialog nó tự làm cho nó như phương thức Dialog .. ...

+0

SizeToContent rất hữu ích. Cảm ơn. – honzakuzel1989

1
namespace System.Window.Form 
{ 
    public static class Ext 
    { 
     public static DialogResult ShowDialog(this UserControl @this, string title) 
     { 
      Window wind = new Window() { Title = title, Content = @this }; 
      return wind.ShowDialog(); 
     } 
    } 
} 

Việc sử dụng nó có thể đơn giản như UserControlInstance.ShowDialog(). Triển khai được tùy chỉnh tốt hơn sẽ là bằng cách mở rộng lớp Window và tùy chỉnh nó bằng cách sử dụng trình thiết kế và mã để nhận bất kỳ chức năng nào.

+0

Ví dụ hay, chỉ trong trường hợp của WPF (System.Windows.Window.ShowDialog()) Kiểu trả về phải là bool? (Nullable Type) –

Các vấn đề liên quan