Преобразование проекта C# в VB.net

Я пытаюсь преобразовать проект С# в проект vb.net, но у меня возникают некоторые трудности.

Ниже приведено событие нажатия кнопки:

private void button2_Click(object
sender, EventArgs e)
        {
            Appointment m_App = new Appointment();
            m_App.StartDate = dayView1.SelectionStart;
            m_App.EndDate = dayView1.SelectionEnd;
            m_App.BorderColor = Color.Red;

            m_Appointments.Add(m_App);

            dayView1.Invalidate();
        }

Что затем вызывает следующее:

protected override void
    OnPaint(PaintEventArgs e)
{
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

            // resolve appointments on visible date range.
            ResolveAppointmentsEventArgs args = new
        ResolveAppointmentsEventArgs(this.StartDate,
        this.StartDate.AddDays(daysToShow));
            ResolveAppointments(args);

            using (SolidBrush backBrush = new
          SolidBrush(renderer.BackColor))
                  e.Graphics.FillRectangle(backBrush,
          this.ClientRectangle);

            // Visible Rectangle            Rectangle
        rectangle = new Rectangle(0, 0,
              this.Width - VScrollBarWith,
              this.Height);

            DrawDays(ref e, rectangle);

            DrawHourLabels(ref e, rectangle);

            DrawDayHeaders(ref e, rectangle);
}

Я преобразовал каждый раздел в код VB.net:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click
         Dim m_App As New Appointment()
         m_App.StartDate = DayView1.SelectionStart
         m_App.EndDate = DayView1.SelectionEnd
         m_App.BorderColor = Color.Red

         m_Appointments.Add(m_App)

         DayView1.Invalidate()

 End Sub

Но он не вызывает автоматически:

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias

            ' resolve appointments on visible date range.'
            Dim args As New ResolveAppointmentsEventArgs(Me.StartDate, >Me.StartDate.AddDays(m_daysToShow))
            ResolveAppointments(args)

            Using backBrush As New SolidBrush(m_renderer.BackColor)
                e.Graphics.FillRectangle(backBrush, Me.ClientRectangle)
            End Using

            ' Visible Rectangle '
            Dim rectangle As New Rectangle(0, 0, Me.Width - VScrollBarWith, Me.Height)

            DrawDays(e, rectangle)

            DrawHourLabels(e, rectangle)

            DrawDayHeaders(e, rectangle)
 End Sub

person Azza    schedule 26.08.2010    source источник
comment
почему вы пытаетесь изменить C# на VB.NET? Любопытный.   -  person George Stocker    schedule 26.08.2010
comment
лол, что не так с изменением C # на VB.NET?   -  person Azza    schedule 26.08.2010
comment
Есть языки с более приятным синтаксисом, чем C#, но VB.NET не входит в их число.   -  person Joel Mueller    schedule 26.08.2010
comment
Ваш VB.NET OnPaint когда-нибудь вызывается?   -  person Albin Sunnanbo    schedule 26.08.2010
comment
Я попытался вызвать его с помощью события рисования, но я не знаю, как это назвать, поскольку он находится в коде пользовательского элемента управления.   -  person Azza    schedule 27.08.2010


Ответы (2)


Существует бесплатная онлайн-утилита преобразования developerfusion.

person volody    schedule 26.08.2010
comment
+1 отличная ссылка. Кроме того, SharpDevelop для Mono предлагает преобразования C#/VB.NET: совет по преобразованию синтаксиса vb net"> stackoverflow.com/questions/3453890/ - person JohnB; 26.08.2010
comment
Или загрузите сборку в Reflector red-gate.com/products/reflector и выведите на нескольких языках. - person Mikael Svenson; 26.08.2010
comment
Да, developerfusion великолепен, это то, что я использовал для конвертации проекта страница за страницей, но это просто не совсем правильно! - person Azza; 26.08.2010
comment
Попробовал и два других инструмента. Они дают примерно одинаковые результаты. Кто-нибудь знает, почему команда Invalidate() не вызывает обработчик рисования в соответствии с приведенным выше кодом? - person Azza; 26.08.2010

Вместо переопределения события OnPaint попробуйте объявить его следующим образом:

Private Sub form_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

End Sub
person Geoff Appleford    schedule 27.08.2010