Копирование и вставка буфера обмена между двумя приложениями - PullRequest
0 голосов
/ 11 января 2020

Я попытался использовать копирование-вставку объекта между двумя приложениями и получил ошибку "System.InvalidCastException: 'Невозможно привести объект типа' System.IO.MemoryStream 'к типу' howto_net_clipboard_object.Employee '.'", поэтому я взял образец из http://www.vb-helper.com/howto_net_clipboard_object.html и начал экспериментировать. Объект для копирования:

<Serializable()>
Public Class Employee
    Public FirstName As String
    Public LastName As String

    Public Sub New()
    End Sub
    Public Sub New(ByVal first_name As String, ByVal last_name As String)
        FirstName = first_name
        LastName = last_name
    End Sub
End Class

Копировать в буфер обмена:

Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click
        Dim emp As New Employee(txtFirstName.Text, txtLastName.Text)
        Clipboard.SetDataObject(emp)
    End Sub

и вставить

Private Sub btnPaste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPaste.Click
    Dim data_object As IDataObject = Clipboard.GetDataObject
    If data_object.GetDataPresent("howto_net_clipboard_object.Employee") Then
        Dim emp As Employee = DirectCast(data_object.GetData("howto_net_clipboard_object.Employee"), Employee)
        txtDropFirstName.Text = emp.FirstName
        txtDropLastName.Text = emp.LastName
    Else
        txtDropFirstName.Text = ""
        txtDropLastName.Text = ""
    End If
End Sub   

Тест 1 - после того, как VS Community 2019 преобразовал источник - выполнить программа - работает.

Тест 2 - скопировал преобразованный источник - скопируйте в одну прогу и вставьте в другой - работает.

Тест 3 - Открыл VS с новым проектом, собрал тот же сформировал макет и скопировал код и запустил мою новую версию и оригинал. На этот раз я получил ту же ошибку, что и в моем приложении.

Что мне не хватает?

...