Есть ли разница между System.Windows.Clipboard и System.Windows.Forms.Clipboard? - PullRequest
10 голосов
/ 02 апреля 2012

Есть ли разница между System.Windows.Clipboard и System.Windows.Forms.Clipboard?

В документации для версии System.Windows.Forms конкретно указано, что для сохранения объекта в буфере обмена он должен быть сериализуемым, а ваше приложение должно иметь модель STA, но документацию для версии System.Windows.не перечислять ни как требование.Это?Почему два класса?В чем разница?

В случае, если это имеет значение, наше приложение WPF, и да, я знаю, что первое - для WPF, а второе - для Windows.Forms ... но почему?Почему бы просто не всегда использовать версию System.Windows даже с приложениями на основе форм, учитывая, что это всего лишь ссылка и она менее ограничена в использовании, а объект - это просто объект в .NET.

Ответы [ 2 ]

6 голосов
/ 02 апреля 2012

Простой: 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.

0 голосов
/ 02 апреля 2012

Пространство имен System.Windows относится к WPF (новый способ создания графического интерфейса в Windows), а пространство имен System.Windows.Forms содержит элементы о формах (старый стиль).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...