C# zu VB.NET

  • WPF

Es gibt 45 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    C# zu VB.NET

    Hi,

    ICh habe probleme diesen C code in einen vb.net code zuwandeln. ICh habe schon verschiedene umwandler im netz versucht jedoch bekomme ich immer nur fehler ausgegeben und da ich nur sehr wenig erfahrung habe mit c könnt ich noch nicht mal sagen ob der code überhaupt in vb geht.

    C code
    Spoiler anzeigen

    Quellcode

    1. using System.Timers;
    2. using System.Windows;
    3. using System.Windows.Controls;
    4. namespace RounderProgressBar
    5. {
    6. /// <summary>
    7. /// Interaction logic for RounderProgressBar.xaml
    8. /// </summary>
    9. public partial class RounderProgressBarControl : UserControl
    10. {
    11. private const string PERCENTS_TEXT = "{0}%";
    12. private delegate void VoidDelegete();
    13. private Timer timer;
    14. private bool loaded;
    15. private int progress;
    16. public RounderProgressBarControl()
    17. {
    18. InitializeComponent();
    19. Loaded += OnLoaded;
    20. }
    21. void OnLoaded(object sender, RoutedEventArgs e)
    22. {
    23. timer = new Timer(100);
    24. timer.Elapsed += OnTimerElapsed;
    25. timer.Start();
    26. loaded = true;
    27. }
    28. void OnTimerElapsed(object sender, ElapsedEventArgs e)
    29. {
    30. rotationCanvas.Dispatcher.Invoke
    31. (
    32. new VoidDelegete(
    33. delegate
    34. {
    35. SpinnerRotate.Angle += 30;
    36. if (SpinnerRotate.Angle == 360)
    37. {
    38. SpinnerRotate.Angle = 0;
    39. }
    40. }
    41. ),
    42. null
    43. );
    44. }
    45. private void tblPercents_TextChanged(object sender,
    46. TextChangedEventArgs e)
    47. {
    48. if (loaded)
    49. {
    50. Canvas.SetLeft(tbPercents,
    51. (rotationCanvas.ActualHeight - tbPercents.ActualWidth) / 2);
    52. Canvas.SetTop(tbPercents,
    53. (rotationCanvas.ActualHeight - tbPercents.ActualHeight) / 2);
    54. }
    55. }
    56. private void UpdateProgress()
    57. {
    58. tbPercents.Text = string.Format(PERCENTS_TEXT, progress);
    59. }
    60. public int Progress
    61. {
    62. get { return progress; }
    63. set
    64. {
    65. progress = value;
    66. UpdateProgress();
    67. }
    68. }
    69. }
    70. }


    Mein vb code
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Timers
    2. Imports System.Windows
    3. Imports System.Windows.Controls
    4. Namespace RundeProgressBar
    5. Partial Public Class RundeProgressBarControl
    6. Inherits UserControl
    7. Private Delegate Sub VoidDelegete()
    8. Private Timer As Timer
    9. Private Loader As Boolean
    10. Private progress As Integer
    11. Public Sub New()
    12. End Sub
    13. End Class
    14. End Namespace

    mein Xaml code
    Spoiler anzeigen

    Quellcode

    1. <UserControl x:Class="RounderProgressBar.RounderProgressBarControl"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. Height="200" Width="200">
    5. <UserControl.Resources>
    6. <Style x:Key="canvasStyle" TargetType="{x:Type Canvas}">
    7. <Setter Property="Background" Value="Transparent"/>
    8. <!--<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>-->
    9. </Style>
    10. <Style x:Key ="rectangle" TargetType="{x:Type Rectangle}">
    11. <Setter Property="Width" Value="20"/>
    12. <Setter Property="Height" Value="20"/>
    13. <Setter Property="Fill" Value="LightSkyBlue" />
    14. <Setter Property="Canvas.Left" Value="90"/>
    15. <Setter Property="Canvas.Top" Value="0"/>
    16. <Setter Property="RadiusX" Value="5"/>
    17. <Setter Property="RadiusY" Value="5"/>
    18. </Style>
    19. </UserControl.Resources>
    20. <Canvas RenderTransformOrigin="0.5,0.5" Style="{StaticResource canvasStyle}">
    21. <Canvas Name="rotationCanvas" RenderTransformOrigin="0.5,0.5" Style="{StaticResource canvasStyle}">
    22. <Rectangle Style="{StaticResource rectangle}">
    23. </Rectangle>
    24. <Rectangle Opacity="0.92" Style="{StaticResource rectangle}">
    25. <Rectangle.RenderTransform>
    26. <RotateTransform Angle="30" CenterX="10" CenterY="100"/>
    27. </Rectangle.RenderTransform>
    28. </Rectangle>
    29. <Rectangle Opacity="0.84" Style="{StaticResource rectangle}">
    30. <Rectangle.RenderTransform>
    31. <RotateTransform Angle="60" CenterX="10" CenterY="100"/>
    32. </Rectangle.RenderTransform>
    33. </Rectangle>
    34. <Rectangle Opacity="0.76" Style="{StaticResource rectangle}" >
    35. <Rectangle.RenderTransform>
    36. <RotateTransform Angle="90" CenterX="10" CenterY="100"/>
    37. </Rectangle.RenderTransform>
    38. </Rectangle>
    39. <Rectangle Opacity="0.66" Style="{StaticResource rectangle}">
    40. <Rectangle.RenderTransform>
    41. <RotateTransform Angle="120" CenterX="10" CenterY="100"/>
    42. </Rectangle.RenderTransform>
    43. </Rectangle>
    44. <Rectangle Opacity="0.58" Style="{StaticResource rectangle}" >
    45. <Rectangle.RenderTransform>
    46. <RotateTransform Angle="150" CenterX="10" CenterY="100"/>
    47. </Rectangle.RenderTransform>
    48. </Rectangle>
    49. <Rectangle Opacity="0.5" Style="{StaticResource rectangle}" >
    50. <Rectangle.RenderTransform>
    51. <RotateTransform Angle="180" CenterX="10" CenterY="100"/>
    52. </Rectangle.RenderTransform>
    53. </Rectangle>
    54. <Rectangle Opacity="0.42" Style="{StaticResource rectangle}" >
    55. <Rectangle.RenderTransform>
    56. <RotateTransform Angle="210" CenterX="10" CenterY="100"/>
    57. </Rectangle.RenderTransform>
    58. </Rectangle>
    59. <Rectangle Opacity="0.34" Style="{StaticResource rectangle}" >
    60. <Rectangle.RenderTransform>
    61. <RotateTransform Angle="240" CenterX="10" CenterY="100"/>
    62. </Rectangle.RenderTransform>
    63. </Rectangle>
    64. <Rectangle Opacity="0.26" Style="{StaticResource rectangle}" >
    65. <Rectangle.RenderTransform>
    66. <RotateTransform Angle="270" CenterX="10" CenterY="100"/>
    67. </Rectangle.RenderTransform>
    68. </Rectangle>
    69. <Rectangle Opacity="0.16" Style="{StaticResource rectangle}" >
    70. <Rectangle.RenderTransform>
    71. <RotateTransform Angle="300" CenterX="10" CenterY="100"/>
    72. </Rectangle.RenderTransform>
    73. </Rectangle>
    74. <Rectangle Opacity="0.08" Style="{StaticResource rectangle}" >
    75. <Rectangle.RenderTransform>
    76. <RotateTransform Angle="330" CenterX="10" CenterY="100"/>
    77. </Rectangle.RenderTransform>
    78. </Rectangle>
    79. <Canvas.RenderTransform>
    80. <RotateTransform x:Name="SpinnerRotate" Angle="0" CenterX="100" CenterY="100" />
    81. </Canvas.RenderTransform>
    82. </Canvas>
    83. </Canvas>
    84. </UserControl>


    ICh will dieses projekt nach bauen und so erste erfahrungen mit wpf sammeln. codeproject.com/Articles/38041/WPF-Round-Progress-Bar
    Bilder
    • test.PNG

      6,17 kB, 254×253, 221 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ () aus folgendem Grund: Titel angepasst

    Bei mir nicht? ô.0

    VB.NET-Quellcode

    1. Imports System.Timers
    2. Imports System.Windows
    3. Imports System.Windows.Controls
    4. Namespace RounderProgressBar
    5. ''' <summary>
    6. ''' Interaction logic for RounderProgressBar.xaml
    7. ''' </summary>
    8. Public Partial Class RounderProgressBarControl
    9. Inherits UserControl
    10. Private Const PERCENTS_TEXT As String = "{0}%"
    11. Private Delegate Sub VoidDelegete()
    12. Private timer As Timer
    13. Private loaded As Boolean
    14. Private m_progress As Integer
    15. Public Sub New()
    16. InitializeComponent()
    17. AddHandler Loaded, AddressOf OnLoaded
    18. End Sub
    19. Private Sub OnLoaded(sender As Object, e As RoutedEventArgs)
    20. timer = New Timer(100)
    21. AddHandler timer.Elapsed, AddressOf OnTimerElapsed
    22. timer.Start()
    23. loaded = True
    24. End Sub
    25. Private Sub OnTimerElapsed(sender As Object, e As ElapsedEventArgs)
    26. rotationCanvas.Dispatcher.Invoke(New VoidDelegete(Function() Do
    27. SpinnerRotate.Angle += 30
    28. If SpinnerRotate.Angle = 360 Then
    29. SpinnerRotate.Angle = 0
    30. End If
    31. End Function), Nothing)
    32. End Sub
    33. Private Sub tblPercents_TextChanged(sender As Object, e As TextChangedEventArgs)
    34. If loaded Then
    35. Canvas.SetLeft(tbPercents, (rotationCanvas.ActualHeight - tbPercents.ActualWidth) / 2)
    36. Canvas.SetTop(tbPercents, (rotationCanvas.ActualHeight - tbPercents.ActualHeight) / 2)
    37. End If
    38. End Sub
    39. Private Sub UpdateProgress()
    40. tbPercents.Text = String.Format(PERCENTS_TEXT, m_progress)
    41. End Sub
    42. Public Property Progress() As Integer
    43. Get
    44. Return m_progress
    45. End Get
    46. Set
    47. m_progress = value
    48. UpdateProgress()
    49. End Set
    50. End Property
    51. End Class
    52. End Namespace
    enthält dein vb-Projekt denn auch die Xaml-Datei?

    Ah - vmtl. trifft dich der Default-Namespace, den VB defaultmäßig hinzufügt.

    Daher ist dein Xaml die Klasse "RounderProgressBar.RounderProgressBarControl", während dein vb-Code "MyNamespace.RounderProgressBar.RounderProgressBarControl" ist, und das sind 2 verschiedene Klassen.
    Das teil ist so oder so absoluter schrott.
    Kein Mensch der noch bei Verstand ist macht sowas mit nem UserControl... der Code ist zum die Wand rauf.

    a) Niemand braucht in WPF noch Timer und den ganzen Schrott für nen paar kleine Dinge
    b) Wenn schon ein neues Control, dann bitte eine andere Basisklasse. WPF verwendet eine sehr tiefe Klassenhierarchie und dabei ist das UserControl garantiert nicht das richtige. Es geht in WPF so oder so meistens nur großteils das richtige Control zu finden und dort einen neuen Style verwenden oder Kleinigkeiten zu verändern. Und wenn man nun schon der Meinung ist ein neues Control erstellen zu müssen dann bitte als Basisklasse die Klasse RangeBase welche hierfür nunmal geschaffen ist. (oder wenn man noch etwas tiefer gehen möchte Control oder FrameworkElement).

    Wenn man jedoch eine wirklich schöne Lösung möchte: scottlogic.co.uk/blog/colin/20…ng-an-attached-viewmodel/


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Wenn ich das projekt öffnen will kömmt das

    C:\Users\\Desktop\CircularProgressBar\CircularProgressBar.csproj : error : Die Projektdatei "CircularProgressBar.csproj" kann nicht gelesen werden.
    C:\Users\\Desktop\CircularProgressBar\CircularProgressBar.csproj(99,3): Das importierte Projekt "C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.CSharp.targets" wurde nicht gefunden. Vergewissern Sie sich, dass der Pfad in der <Import>-Deklaration korrekt und die Datei auf dem Datenträger vorhanden ist.

    Silverlight 5 ist jedoch inst

    Edit by hal2000:
    - Vollzitat entfernt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Ich hatte den Source nicht heruntergeladen. Aber du hast recht es funktioniert nicht. AABER dann könnte man etwas kreativ sein und einfach ein Neues Projekt machen (kein Silverlight-bei mir war das das Problem) und anschließend kann man dann ganz einfach die Dateien wieder hinzufügen. Fertig :)


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    thefiloe schrieb:

    Ich hatte den Source nicht heruntergeladen. Aber du hast recht es funktioniert nicht. AABER dann könnte man etwas kreativ sein und einfach ein Neues Projekt machen (kein Silverlight-bei mir war das das Problem) und anschließend kann man dann ganz einfach die Dateien wieder hinzufügen.

    Damit habichmich jetzt eine Weile abgemüht, und fund, dass deine "schöne Lösung" ganzngar unbrauchbar ist, weil Silverlight ist scheinbar eben kein Wpf :(
    na, halt richtig nach vb übersetzen, unter berücksichtigung von post#9

    Aber eine Progressbar ist das natürlich mitnichten, sondern es ist die gute olle Win95 - Sanduhr (gibts die eiglich noch iwo? ;)), bisserl aufgepeppt - aber ziemlich flackernd, findich.

    Auch über Wpf kannste damit nix lernen: Man tut es halt aufs Window, wie jedes annere Control auch, und programmiert isses sehr herkömmlich, also eher im WinForms-Stil denn Wpf-like.

    Das Silverlight-Teil ist schon wpf-likiger, nämlich im wesentlichen wird dort der Standard-Progressbar nur ein anneres Template angedreht, und schon isse rund.