IT박스

사용자 정의 UserControl을 대화 상자로 어떻게 표시합니까?

itboxs 2020. 11. 14. 10:03
반응형

사용자 정의 UserControl을 대화 상자로 어떻게 표시합니까?


UserControlC # / WPF (.NET 3.5)에서 사용자 지정 을 대화 상자로 어떻게 표시 합니까?


그것을 Window 에 놓고 Window.ShowDialog를 호출하십시오 . (또한 아직 수행하지 않은 경우 PresentationCore, WindowsBase 및 PresentationFramework에 대한 참조를 추가하십시오.)

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

        window.ShowDialog();
}

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

나를 위해 마술처럼 작동했습니다. 모달 대화 상자로 만들 수 있습니까?


정답 : ShowDialog 자체가 Modal Dialog로 만듭니다 .. ...


내가 아는 한 당신은 그렇게 할 수 없습니다. 대화 상자에 표시하려면 괜찮습니다. UserControl 만 포함 된 새 Window를 만들고 해당 Window의 인스턴스를 만든 후 ShowDialog ()를 호출하면됩니다.

편집 :UserControl 무엇을 당신이하려는 것은 사실상 불가능하므로 클래스는 방법이 ShowDialog가 포함되어 있지 않습니다.

그러나 이것은 다음과 같습니다.

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

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();
        }
    }
}

사용은 UserControlInstance.ShowDialog ()만큼 간단합니다. 더 나은 사용자 정의 구현은 Window 클래스를 확장하고 디자이너와 코드를 사용하여이를 사용자 정의하여 기능을 가져 오는 것입니다.


나는 이것이 .net 3.5 용이라는 것을 알고 있지만 여기 .net 2.0에 대한 실행 가능한 솔루션이 있습니다.

  MyUserControl myUserControl= new MyUserControl();

  Form window = new Form
  {
    Text = "My User Control",
    TopLevel = true,
    FormBorderStyle = FormBorderStyle.Fixed3D, //Disables user resizing
    MaximizeBox = false,
    MinimizeBox = false,
    ClientSize = myUserControl.Size //size the form to fit the content
  };

  window.Controls.Add(myUserControl);
  myUserControl.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
  window.ShowDialog();

'sixlettervariables'의 답이 이렇게 수정되면 작동합니다.

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 ( );
}

참고 URL : https://stackoverflow.com/questions/1262115/how-do-you-display-a-custom-usercontrol-as-a-dialog

반응형