Какое отношение имеет класс буфера обмена или SendKeys к WinForms? - PullRequest
1 голос
/ 24 октября 2009

Эти два полезных класса находятся под ссылкой System.Windows.Forms ....

Я не вижу большой связи между этими и формами вин .. Кто-нибудь знает, почему они там?

спасибо.

Ответы [ 4 ]

3 голосов
/ 24 октября 2009

Они внутренне используют API-интерфейсы платформы Win32, на которых построен WinForm.

1 голос
/ 24 октября 2009

Windows Forms были, когда это было сделано, ЕДИНСТВЕННЫМ (Microsoft) средством создания графического пользовательского интерфейса на рабочем столе.

SendKeys и буфер обмена используют Windows API для управления приложениями с графическим интерфейсом. Когда это было создано, было разумно предположить, что они будут использоваться из программы с графическим интерфейсом, которая (тогда) означала приложение Windows Forms.

Ни один из них, как правило, не использовался бы из консольного приложения, но если бы вы это делали, включая сборку "окон" (которая в то время означала формы Windows), это было разумно, поскольку вы работа с системой Windows.

Я согласен, однако, что теперь, когда существует WPF, было бы лучше иметь их в отдельной сборке. Тем не менее, Microsoft очень хорошо поддерживает обратную совместимость.

Для этого они оставили это в пространствах имен Windows Forms, но также реализовали System.Windows.Clipboard для приложений WPF. (Я полагаю, что они решили, что SendKeys не требовался в современной разработке, так как им немного злоупотребляли, и просто умышленно это исключили.)

0 голосов
/ 24 октября 2009

Вообще говоря, вы не будете использовать буфер обмена или SendKeys с приложением ASP.Net или консольным приложением, поэтому для них имеет смысл иметь значение System.Windows.Forms.

Где бы вы их ожидали? В System.ClipboardAndSendKeys?

0 голосов
/ 24 октября 2009

SendKeys может быть удобен для выделения текстовых полей. SendKeys "{HOME} + {END}" - это типичная методика, перенесенная из Visual Basic, когда текстовое поле имеет фокус.

Класс Clipboard полезен, потому что он позволяет вам получать данные, хранящиеся в буфере обмена машины, особенно полезно, если это данные, поступающие из другого запущенного приложения. Ожидаемое поведение буфера обмена практически во всех приложениях, которые имеют любую семантику копирования / вставки.

...