Witam.
W trakcie tworzenia projektu SSIS (Visual Studio 2008) napotkałem się na problem z którym nie mogę sobie poradzić. W projekcie znajduje się Script Task który importuje pewne dane do kontrolki datagridview. Wszystko poprawnie działa, program nie wyrzuca żadnych błędów. Niestety problem pojawia się gdy próbuję skopiować zawartość komórki w kontrolce datagridview. Mogę skopiować zawartość komórki gdy wejdę w tryb edycji ale wolałbym żeby była możliwość skopiowania zawartości komórki tylko przy jej zaznaczeniu. Przy próbie skopiowania(ctrl + c) zawartości zaznaczonej komórki wyskakuje błąd:
user image

Wystąpił nieobsługiwany wyjątek w składniku aplikacji. Jeśli klikniesz przycisk kontynuuj aplikacja zignoruje błąd i podejmie próbę kontynuacji
Bieżący wątek musi być ustawiony na tryb jednowątkowego apartamentu aby można było wykonywać wywołania OLE. Upewnij się że w funkcji Main jest zaznaczony STAThreadAttribute

Szczegóły:
Szczegółowe informacje na temat wywoływania debugowania w trybie JIT (just in time)
zamiast tego okna dialogowego znajdują się na końcu tego komunikatu.

************** Debugowanie w trybie JIT **************
Aby włączyć debugowanie w trybie JIT (just-in-time), plik .config tej
aplikacji lub komputera (machine.config) musi mieć
wartość jitDebugging ustawioną w sekcji system.windows.forms.
Aplikacja musi być również skompilowana z włączonym
debugowaniem.

Na przykład:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Gdy debugowanie JIT jest włączone, wszystkie nieobsługiwane wyjątki
są wysyłane do debugera JIT zarejestrowanego na komputerze
i nie są obsługiwane w tym oknie dialogowym.

Teraz zastanawiam się czy standardowo kopiowanie zaznaczonej komórki jest w ogóle możliwe w tej kontrolce czy trzeba napisać funkcję która to obsłuży? Niestety google nie pomogło mi w rozwiązaniu tego problemu. Są rozwiązania ale tylko jeśli program nie jest częścią ssis czyli tutaj nie mają zastosowania albo nie działają. Wszelkie sugestie mile widziane. Z góry dzięki za pomoc.

Kod głównego skryptu:

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Windows.Forms
Imports System.Xml
Imports System.Data.OleDb


<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
    Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

    Enum ScriptResults
        Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
        Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
    End Enum

    Public Sub Main()
        Dim Dialog1 As New Form1
        Dim oleDA As New OleDbDataAdapter()
        Dim dt As New DataTable()
        oleDA.Fill(dt, Dts.Variables("VAR_OBJECT_EMAIL_CRM").Value)
        Dialog1.DataGridView1.AutoGenerateColumns = True
        Dialog1.DataGridView1.DataSource = dt
        Dialog1.DataGridView1.Refresh()
        Dialog1.ShowDialog()
        If Dialog1.DialogResult = DialogResult.OK Then
            Dts.TaskResult = ScriptResults.Success
		end if

    End Sub

End Class

Kod Windows Form:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CBZakazEmailingu.SelectedIndex = 1
    End Sub
    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDodaj.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub
    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BAnuluj.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

End Class

dodanie znaczników <code class="vbnet"> - Furious Programming