Benutzer mit den meisten Antworten
VSTO-Addin Form Textbox-Array in Schleife

Frage
-
Hallo zusammen,
Das hier ist mein erstes Excel-Addin und ich bin nur Ingenieur, kein Softwareschmied, daher bitte um Nachsicht...
Ich habe vor längerer Zeit mit VS2012 eine Windows-Form programmiert, in der viele Werte in Combo- und Textboxen eingegeben werden und die Werte dann an verschiedene Arrays zurückgeliefert werden. Dies funktionierte auch wunschgemäss und auch jetzt noch:
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
Dim tbOk(15) As String
For i As Integer = 0 To 15
tbOk(i) = DirectCast(Me.Controls("tb" & i), TextBox).Text
If tbOk(i) = Nothing Then
tbOk(i) = ""
End If
Next
Dim cbOK(5) As String
For j As Integer = 0 To 5
Dim cbAccept As ComboBox = DirectCast(Me.Controls("cb" & j), ComboBox)
cbOK(j) = cbAccept.SelectedItem
If cbOK(j) = Nothing Then
cbOK(j) = ""
Else : cbOK(j) = cbAccept.SelectedItem.ToString()
End If
Next...
Ich schreibe gerade etwas ähliches, nur in einem VSTO-Plugin. Hier will das Ganze aber nicht... Als Fehler kommt: BC30002 - Type Textbox/Combobox is not defined.
Liegt es an der Position des Codes? Der Schnipsel wurde in "Form.vb" erstellt und die Klasse wird dann innerhalb "Ribbon.vb" aufgerufen. Ich würde es gerne als Screenshot posten, leider habe ich kein geprüftes Konto (in Arbeit).
Den nachfolgenden Tip habe ich schon versucht mit Imports System.Web leider ohne Besserung... https://forums.asp.net/t/922366.aspx?BC30002+Type+TextBox+is+not+defined . Imports System.Windows.Forms bringt auch nichts, da ausgegraut mit dem Hinweis, dass unnötig.
Der einzige Unterschied zu dem bisherigen Code liegt darin, dass ich übergeordnet noch das eigentliche Projekt habe. Liegt da der Fehler? Mit dem DirectCast-Befehl hat das über Jahre geklappt, weiss jemand Rat, warum das jetzt nicht mehr funzen sollte, bin mit meinem Latein am Ende?
Danke und freundliche Grüsse
Robse-Ponte
- Bearbeitet Robse-Ponte Montag, 10. Juni 2019 16:01
Antworten
-
Das könnte u.U. an Namenskonflikten zwischen Assemblies liegen.
Office bringt eine eigene Forms20 ComboBox mit.Vielleicht hilft es, die ComboBox mittels System.Windows.Forms. zu klassifizieren:
Dim cbAccept As System.Windows.Forms.ComboBoxSchau mal in deine Using-Direktiven am Anfang.
- Als Antwort markiert Robse-Ponte Montag, 10. Juni 2019 20:01
Alle Antworten
-
Das könnte u.U. an Namenskonflikten zwischen Assemblies liegen.
Office bringt eine eigene Forms20 ComboBox mit.Vielleicht hilft es, die ComboBox mittels System.Windows.Forms. zu klassifizieren:
Dim cbAccept As System.Windows.Forms.ComboBoxSchau mal in deine Using-Direktiven am Anfang.
- Als Antwort markiert Robse-Ponte Montag, 10. Juni 2019 20:01
-
Hoi bfuerchau,
Ich fasse es nicht. Es funktioniert.
Das kann doch nicht wahr sein, dass man dies separat zuweisen muss. Tausend Dank für die Hilfe! Ich habe heute den ganzen Tag rumgewurschtelt, Dachte dass es schon deklariert ist wg. ausgegrautem System.Windows.Forms. Super Sache.
Viele Grüsse
-
Wichtig bei Using-Direktiven ist die Reihenfolge der Deklaration.
Der Name einer Klasse wird über die Direktiven ermittelt. Die zuerst gefundene wird dann verwendet.
Deshalb ist es schon mal ganz hilfreich, die Klasse zu spezifizieren.Das Ausgrauen kommt vom Codeanalyser, der allerdings nicht weiß, was du wirklich willst.
Somit kommt es zu Seiteneffekten, wenn man den Vorschlägen schon mal folgt.In der Objekt-Welt eigentlich aller Sprachen ist die eindeutige Qualifizierung einer Klasse immer erforderlich.