Hallo Zusammen,
ich glaub ich hab da ein ziemlich simples Proble´m, für mich als Anfänger aber trotzden verwirrend.
Ich möchte aus meinem Hauptprogramm auf die Property eines von mir erstellten Objekts zugreifen. Dieses Objekt habe ich zuvor mit vielen anderen Objekten in eine Liste vom Typ Objekt geschoben. Versuche ich zuzugreifen bekomme ich die Fehlermeldung :
"Option Strict lässt spätes Binden nicht zu".
Ich weiß dass Fehler die sich auf das "Late Binding" beziehen mit dem falschen Casten zusammen hängen!
Aber aufddie Lösung komm ich trotzdem nicht!
Das stark vereinfachte Programm habe ich angehäng und hier der relevante Code:
Hauptprogramm:
Die Klasse:
Vielen Dank für Eure Hilfe vorab,
Duster
ich glaub ich hab da ein ziemlich simples Proble´m, für mich als Anfänger aber trotzden verwirrend.
Ich möchte aus meinem Hauptprogramm auf die Property eines von mir erstellten Objekts zugreifen. Dieses Objekt habe ich zuvor mit vielen anderen Objekten in eine Liste vom Typ Objekt geschoben. Versuche ich zuzugreifen bekomme ich die Fehlermeldung :
"Option Strict lässt spätes Binden nicht zu".
Ich weiß dass Fehler die sich auf das "Late Binding" beziehen mit dem falschen Casten zusammen hängen!
Aber aufddie Lösung komm ich trotzdem nicht!
Das stark vereinfachte Programm habe ich angehäng und hier der relevante Code:
Hauptprogramm:
VB.NET-Quellcode
- Option Strict On
- Public Class Form1
- Private _cmdDrawState As Boolean = False
- Private _lines as new Lines()
- Private ReadOnly _linesPenData as New PenData()
- Private _linesCoords as Point()
- Private ReadOnly _gfxObject as New List(Of Object)
- Private _currentGfxObject as New Object()
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- InitializeLists()
- InitializeShape()
- _currentGfxObject = _gfxObject.Item(0)
- TxtTest01.Text = _currentGfxObject.GetType().ToString()
- TestSub(_currentGfxObject)
- End Sub
- Public Sub TestSub(gfxObject As Object)
- 'TxtTest02.Text = gfxObject.TestProperty.ToString() ' Fehler: Option Strict läßt
- ' spätes Binden nicht zu
- End Sub
- Protected Overrides Sub OnPaint(e As PaintEventArgs)
- MyBase.OnPaint(e)
- _cmdDrawState = True
- _lines = New Lines(e, _linesPenData, _linesCoords)
- End Sub
- Private Sub InitializeLists()
- Dim gfxObjects () As Object = { _lines }
- _gfxObject.AddRange(gfxObjects)
- End Sub
- Public Sub InitializeShape()
- With _linesPenData
- .Alpha = 255
- .Red = 0
- .Green = 0
- .Blue = 255
- .Width = 10
- end With
- _linesCoords = {New Point(550, 220), New Point(800, 220),
- New Point(800, 220), New Point(800, 400),
- New Point(800, 400), New Point(550, 400)}
- End Sub
- End Class
Die Klasse:
VB.NET-Quellcode
- Imports System.Drawing.Drawing2D
- Friend Class Lines
- Inherits Shape
- #Region "CLASS MULTILINES"
- #Region "MultiLines Private Variables"
- Private ReadOnly _e As PaintEventArgs
- Private ReadOnly _penData As PenData
- Private ReadOnly _coordinates As Point()
- #End Region
- #Region "Line Properties"
- ' Das ist die relevante Property
- Friend Overrides Property TestProperty As Boolean = True
- #End Region
- #Region "MultiLines Constructors"
- Public Sub New()
- End Sub
- Public Sub New(e As PaintEventArgs, penData As PenData, coordinates As Point())
- _e = e
- _penData = penData
- _coordinates = coordinates
- DrawMultiLines(_e, _penData, _coordinates)
- End Sub
- #End Region
- #Region "MultiLines Functions"
- Private Function DrawMultiLines(e As PaintEventArgs, penData As PenData, coordinates As Point()) As PaintEventArgs
- Dim linesPen As Pen
- linesPen = GeneratePen (penData)
- e.Graphics.DrawLines(linesPen, coordinates)
- linesPen.Dispose()
- Return e
- End Function
- #End Region
- #End Region
- End Class
Vielen Dank für Eure Hilfe vorab,
Duster
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Duster“ ()