Benötige Hilfe bei der Umstellung von C# zu vb

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Benötige Hilfe bei der Umstellung von C# zu vb

    Liebes Forum,

    ich habe auf Codeprojekt-Seite eine Kalender-Componente gefunden welche ich gerne von C# zu vb.net konvertieren möchte.
    Hier der link: codeproject.com/Articles/38699…Agenda-View-That-You-Will zum Kalender.
    Leider bekomme ich dort keinen Support.
    Folgende Umstellung bereitet mir echte Kopfschmerzen:

    ISelectableElement:

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. using System.Drawing;
    5. namespace System.Windows.Forms.Calendar
    6. {
    7. /// <summary>
    8. /// Represents a clickable element of <see cref="MonthView"/> control
    9. /// </summary>
    10. public interface ISelectableElement
    11. {
    12. /// <summary>
    13. /// Gets the bounds of the element
    14. /// </summary>
    15. Rectangle Bounds { get; }
    16. /// <summary>
    17. /// Gets if the element is currently selected
    18. /// </summary>
    19. bool Selected { get; }
    20. }
    21. }


    ICalendarSelectableElement:

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. using System.Drawing;
    5. namespace System.Windows.Forms.Calendar
    6. {
    7. /// <summary>
    8. /// Interface implemented by every selectable element of the calendar
    9. /// </summary>
    10. public interface ICalendarSelectableElement
    11. : ISelectableElement, IComparable<ICalendarSelectableElement>
    12. {
    13. /// <summary>
    14. /// Gets the calendar this element belongs to
    15. /// </summary>
    16. Calendar Calendar { get; }
    17. /// <summary>
    18. /// Gets the calendar
    19. /// </summary>
    20. DateTime Date { get; }
    21. }
    22. }


    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. using System.Drawing;
    5. namespace System.Windows.Forms.Calendar
    6. {
    7. /// <summary>
    8. /// Implements a basic <see cref="ICalendarSelectableElement"/>
    9. /// </summary>
    10. public abstract class CalendarSelectableElement
    11. : ICalendarSelectableElement
    12. {
    13. /// <summary>
    14. /// Compares this element with other using date as comparer
    15. /// </summary>
    16. /// <param name="element"></param>
    17. /// <returns></returns>
    18. public virtual int CompareTo(ICalendarSelectableElement element)
    19. {
    20. return this.Date.CompareTo(element.Date);
    21. }
    22. ......




    zu VB:

    Quellcode

    1. Imports System.Collections.Generic
    2. Imports System.Text
    3. Imports System.Drawing
    4. Namespace System.Windows.Forms.Calendar
    5. ''' <summary>
    6. ''' Represents a clickable element of <see cref="MonthView"/> control
    7. ''' </summary>
    8. Public Interface ISelectableElement
    9. ''' <summary>
    10. ''' Gets the bounds of the element
    11. ''' </summary>
    12. ReadOnly Property Bounds() As Rectangle
    13. ''' <summary>
    14. ''' Gets if the element is currently selected
    15. ''' </summary>
    16. ReadOnly Property Selected() As Boolean
    17. End Interface
    18. End Namespace


    Quellcode

    1. Imports System.Collections.Generic
    2. Imports System.Text
    3. Imports System.Drawing
    4. Namespace System.Windows.Forms.Calendar
    5. ''' <summary>
    6. ''' Interface implemented by every selectable element of the calendar
    7. ''' </summary>
    8. Public Interface ICalendarSelectableElement
    9. Inherits ISelectableElement
    10. Inherits IComparable(Of ICalendarSelectableElement)
    11. ''' <summary>
    12. ''' Gets the calendar this element belongs to
    13. ''' </summary>
    14. ReadOnly Property Calendar() As Calendar
    15. ''' <summary>
    16. ''' Gets the calendar
    17. ''' </summary>
    18. ReadOnly Property [Date]() As DateTime
    19. End Interface
    20. End Namespace



    Quellcode

    1. Imports System.Collections.Generic
    2. Imports System.Text
    3. Imports System.Drawing
    4. Namespace System.Windows.Forms.Calendar
    5. ''' <summary>
    6. ''' Implements a basic <see cref="ICalendarSelectableElement"/>
    7. ''' </summary>
    8. Public MustInherit Class CalendarSelectableElement
    9. Implements ICalendarSelectableElement
    10. ''' <summary>
    11. ''' Compares this element with other using date as comparer
    12. ''' </summary>
    13. ''' <param name="element"></param>
    14. ''' <returns></returns>
    15. Public Function CompareTo(Other As ICalendarSelectableElement) As Integer
    16. Return Me.[Date].CompareTo(Other.[Date])
    17. End Function
    18. ........


    Hier bei VB kommt folgende Fehlermeldung:

    "CalendarSelectableElement" muss "Function CompareTo(other As Windows.Forms.Calendar35.System.Windows.Forms.Calendar.ICalendarSelectableElement) As Integer" für die IComparable(Of ICalendarSelectableElement)-Schnittstelle implementieren. ;(

    Ja, das ist doch aber erfolgt. Ich habe auch schon anhand eines neu geschriebenen Beispiels die Interfacestruktur nachgebildet. Immer der gleiche Fehler. Ich stehe auf dem Schlauch.
    Für die fragenden Mitstreiter warum ich nicht die Komponente wie sie ist einbinde: Ich möchte z.B. die Tagesfarben am Wochenende ändern, kann aber kein C# :( .

    Vielen Dank.

    Mike
    Fahr über das Interface mit der Maus drüber, wo du es implementierst, dann warte bis das kleine "Quadrat" auftaucht, klicke da drauf und wähle dann "Interface implementieren" oder so ähnlich. Am Code ist dann wohl nichts falsch. Das ist einfach so, warum auch immer.

    Das hier mein ich, das machst Du mit dem Interface:

    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    MikeF schrieb:

    welche ich gerne von C# zu vb.net konvertieren möchte.
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    In VB.Net müssen explizit die implementierten Inteface-Member angegeben werden:

    VB.NET-Quellcode

    1. Public Function CompareTo(Other As ICalendarSelectableElement) As Integer Implements IComparable(Of ICalendarSelectableElement).CompareTo
    2. Return Me.[Date].CompareTo(Other.[Date])
    3. End Function
    Hallo Artentus,

    Danke, Danke, Danke.

    Du bist Heute mein Held des Tages. Es funktioniert.

    Das werde ich bestimmt bei den Beispielen und der Dokumentation überlesen
    haben, oder ich sehe den Wald vor lauter Bäumen nicht mehr.

    LG,

    Mike

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MikeF“ ()

    MikeF schrieb:

    Ob das geht weiß ich jetzt auch nicht.
    Das geht problemlos und dürfte der bequemste Weg sein.
    Füge Deinem Projekt ein C#-DLL-Projekt hinzu, pack da die Quellen rein.
    Füge Deinem Hauptprojekt das DLL-Projekt als Verweis hinzu (nicht aber die DLL selbst) und feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!