Language/C# WPF

WPF에서 'System.Windows' 네임스페이스에 'Forms' 형식 또는 네임스페이스 이름이 없습니다 오류 해결 방법

멱군 2024. 7. 12. 10:08

WPF(Windows Presentation Foundation)와 Windows Forms는 각각 독립적인 UI 프레임워크로, 서로 다른 네임스페이스와 클래스 라이브러리를 사용합니다. 그러나 WPF 애플리케이션에서 Windows Forms의 일부 기능을 사용하려면 System.Windows.Forms 네임스페이스를 참조로 추가해야 합니다. 이글을 보고 추가하는 방법을 따라해보면 해당오류는 금방 없어질꺼에요.

 

 

문제 원인

이 오류는 WPF 프로젝트에서 System.Windows.Forms 네임스페이스를 참조하지 않았기 때문에 발생합니다.

System.Windows.Forms 네임스페이스 오류

WPF와 Windows Forms는 서로 다른 프레임워크이기 때문에, Windows Forms 기능을 사용하려면 별도의 참조를 추가해야 합니다.

System.Windows.Forms 네임스페이스 오류원인

특히 OpenFileDialog와 같은 winform에서 사용하던 UI를 사용하기 위해서는 필수로 추가해야 합니다.

 

해결 방법

1. 프로젝트에 Windows Forms 참조 추가하기 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.

2. 참조 추가를 선택합니다.

참조추가방법

3. 어셈블리 > 프레임워크 탭에서 System.Windows.Forms를 선택하고 확인 버튼을 클릭합니다.

서비스 선택

4. 확인버튼을 클릭하면 참조하위 항목에 System.Windows.Forms가 추가됩니다.

 

예제

OpenFileDialog 사용하기 아래는 WPF 애플리케이션에서 Windows Forms의 OpenFileDialog를 사용하는 간단한 예제입니다.

MainWindow.xaml

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Name="OpenFileButton" Content="Open File" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Click="OpenFileButton_Click"/>
    </Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Windows;
using System.Windows.Forms; // System.Windows.Forms 네임스페이스 추가
using MessageBox = System.Windows.MessageBox; // WPF와 Windows Forms의 MessageBox 충돌 방지

namespace WpfApp
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void OpenFileButton_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                MessageBox.Show($"Selected file: {filePath}", "File Selected", MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
    }
}

 

코드 설명

1. 위의 방법대로 참조 추가: System.Windows.Forms 네임스페이스를 사용하기 위해 프로젝트에 참조를 추가합니다.

2. 네임스페이스 사용: System.Windows.Forms를 사용하기 위해 코드 파일에 네임스페이스를 추가합니다.

3. penFileDialog 사용: Windows Forms의 OpenFileDialog를 사용하여 파일을 선택할 수 있는 다이얼로그를 표시합니다.

4. MessageBox 사용: WPF의 MessageBox를 사용하여 선택된 파일 경로를 표시합니다.

 

결론

WPF 프로젝트에서 Windows Forms 기능을 사용하려면 System.Windows.Forms 네임스페이스를 참조로 추가하고 적절히 네임스페이스를 사용하는 것이 중요합니다.

이 방법을 사용하면 네임스페이스 관련된 다른 에러들도 해당 서비스를 참조하신다면 다양한 오류를 해결할 수 있을꺼에요.