2012-04-02 2 views
10

System.Windows.Clipboard와 System.Windows.Forms.Clipboard간에 차이점이 있습니까?System.Windows.Clipboard와 System.Windows.Forms.Clipboard 사이에 차이점이 있습니까?

System.Windows.Forms 버전의 설명서에는 클립 보드에 개체를 저장하려면 직렬화가 가능해야하며 응용 프로그램에는 STA 모델이 있어야하지만 System.Windows 버전에 대한 설명서에는 ' t 요구 사항 중 하나를 선택하십시오. 그렇지? 왜 두 과목이 있니? 차이점이 뭐야?

중요한 경우, 우리의 응용 프로그램은 WPF이고 그렇습니다 나는 전자가 WPF를위한 것이며 후자는 Windows를위한 것입니다. 양식 ...하지만 왜? System.Windows 버전을 폼 기반 응용 프로그램과 함께 사용하는 이유는 단지 참조 용이며 사용상의 제약이 적기 때문이며 객체는 .NET의 객체 일뿐입니다.

+0

우리는 System.Windows.Clipboard를 사용하고있는 WinForms 코드를 가지고 있습니다. System.Windows.Forms.Clipboard로 전환하면 문제가 해결되었습니다. 왜? –

답변

5

단순 : System.Windows.Clipboard (PresentationCore.dll)은 WPF 용으로, System.Windows.Forms.Clipboard (System.Windows.Forms.dll)은 Windows Forms 용입니다.

두 어셈블리 모두에서 겉으로보기에는 동일한 클래스를 자주 접하게됩니다. 이것은 WPF와 WinForms가 많은 프레임 워크 API가 다르게 구현되어야하는 충분히 다른 시스템을 기반으로하기 때문입니다. 필자는 시스템 클립 보드로 직접 작업하지는 않았지만 WinForms의 저급 Win32 API와의 상대적 근접성과 관련이 있다고 생각합니다. 그래도 나는 확신하지 못한다.

WPF로 작업하고 있으므로 System.Windows.Clipboard을 사용해야합니다. 표면 상으로는 WPF와 WinForms의 구현이 다르기 때문입니다.

+1

네가 각자의 플랫폼에서 사용하도록되어있다는 것을 알고 있지만 차이점에 대해서는 설명하지 않고 한쪽에는 제한이있는 반면 다른 한쪽에는 제한이있는 이유는 있지만 다른 한쪽에는 제한이있는 이유는 무엇입니까? 클립 보드. 그게 내가 궁금해하는거야. 예를 들어, System.Windows 버전은 훨씬 덜 제한적인 것처럼 보이기 때문에 Windows Forms 응용 프로그램에서 사용하지 않는 이유는 무엇입니까? – MarqueIV

+0

나는 이보다 더 많은 대답이있을 것이라고 생각하지 않는다. 그래서 너를 받아 들일 것이다. 그래도 직렬화 문제와 관련하여 문서의 오류인지 또는 WPF 버전의 직렬화되지 않는 버전의 데이터를 실제로 사용할 수 있는지 여부는 알 수 없습니다. – MarqueIV

0

System.Windows 네임 스페이스는 WPF (Windows에서 GUI를 만드는 새로운 방법) 인 반면 System.Windows.Forms 네임 스페이스는 Forms (이전 스타일)에 대한 요소를 포함합니다.

+0

위의 @BoltClock에 대한 내 의견을 참조하십시오. 그러나 간단히 말해서 차이점을 설명하지는 않습니다. 그것이 사용법을 설명합니다. – MarqueIV

+0

Forms에서 GDI +를 사용하는 반면 WPF는 UI에서 DirectX와 직접 작동한다는 차이가 있다고 생각합니다. 따라서 WPF는 GPU 및 기타 구성 요소를 사용하기 위해 여러 스레드를 사용할 수 있습니다. –

+1

그러나 클립 보드는 UI와 아무 관련이 없습니다. 배후에있는 데이터이므로 문제는 중요하지 않습니다. – MarqueIV

관련 문제