Hi everyone!
i have converted the above code from c# to vb.net, and there is some erros in the following lines:
1) Imports
acadApp = Autodesk.AutoCAD.ApplicationServices.Application
Error 1 Imports alias 'acadApp' conflicts with 'Structure AcadApp' declared in the root namespace.
2) pan3ribcombo.CurrentChanged += New EventHandler(Of RibbonPropertyChangedEventArgs)(AddressOf pan3ribcombo_CurrentChanged)
Error 2 'Public Event CurrentChanged(sender As Object, e As Autodesk.Windows.RibbonPropertyChangedEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
What do i have to do to the code work in vb.net????
thanks.
here is the full convert code from C# to vb.net:
Imports Autodesk.Windows
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports acadApp = Autodesk.AutoCAD.ApplicationServices.Application
Imports System.Drawing
Imports System.Drawing.Imaging
Namespace RibbonSample
Public Class Ribbon
Public pan1ribcombo1 As New RibbonCombo()
Public pan3ribcombo As New RibbonCombo()
Public Sub New()
pan3ribcombo.CurrentChanged += New EventHandler(Of RibbonPropertyChangedEventArgs)(AddressOf pan3ribcombo_CurrentChanged)
End Sub
Private Sub pan3ribcombo_CurrentChanged(ByVal sender As Object, ByVal e As RibbonPropertyChangedEventArgs)
Dim but As RibbonButton = TryCast(pan3ribcombo.Current, RibbonButton)
acadApp.ShowAlertDialog(but.Text)
End Sub
<CommandMethod("MyRibbonCombotest")> _
Public Sub RibbonSplitButtontest()
Dim commandlinebutton As New RibbonButton()
commandlinebutton.Text = "Newly Added Button with command: MyRibbonTestCombo"
commandlinebutton.ShowText = True
commandlinebutton.ShowImage = True
commandlinebutton.Image = Images.getBitmap(My.Resources.Small)
commandlinebutton.LargeImage = Images.getBitmap(My.Resources.large)
commandlinebutton.CommandHandler = New RibbonCommandHandler()
pan1ribcombo1.Items.Add(commandlinebutton)
pan1ribcombo1.Current = commandlinebutton
End Sub
<CommandMethod("MyRibbon")> _
Public Sub MyRibbon()
Dim ribbonControl As Autodesk.Windows.RibbonControl = Autodesk.Windows.ComponentManager.Ribbon
Dim Tab As New RibbonTab()
Tab.Title = "Autodesk .NET forum Ribbon Sample"
Tab.Id = "RibbonSample_TAB_ID"
ribbonControl.Tabs.Add(Tab)
' create Ribbon panels
Dim panel1Panel As Autodesk.Windows.RibbonPanelSource = New RibbonPanelSource()
panel1Panel.Title = "Panel1"
Dim Panel1 As New RibbonPanel()
Panel1.Source = panel1Panel
Tab.Panels.Add(Panel1)
Dim pan1button1 As New RibbonButton()
pan1button1.Text = "Button1"
pan1button1.ShowText = True
pan1button1.ShowImage = True
pan1button1.Image = Images.getBitmap(My.Resources.Small)
pan1button1.LargeImage = Images.getBitmap(My.Resources.large)
pan1button1.Orientation = System.Windows.Controls.Orientation.Vertical
pan1button1.Size = RibbonItemSize.Large
pan1button1.CommandHandler = New RibbonCommandHandler()
Dim pan1button2 As New RibbonButton()
pan1button2.Text = "Button2"
pan1button2.ShowText = True
pan1button2.ShowImage = True
pan1button2.Image = Images.getBitmap(My.Resources.Small)
pan1button2.LargeImage = Images.getBitmap(My.Resources.large)
pan1button2.CommandHandler = New RibbonCommandHandler()
Dim pan1button3 As New RibbonButton()
pan1button3.Text = "Button3"
pan1button3.ShowText = True
pan1button3.ShowImage = True
pan1button3.Image = Images.getBitmap(My.Resources.Small)
pan1button3.LargeImage = Images.getBitmap(My.Resources.large)
pan1button3.CommandHandler = New RibbonCommandHandler()
' Set te propperties for the RibbonCombo
' Te ribboncombo control does not listen to the command handler
pan1ribcombo1.Text = " "
pan1ribcombo1.ShowText = True
pan1ribcombo1.MinWidth = 150
Dim pan1row1 As New RibbonRowPanel()
pan1row1.Items.Add(pan1button2)
pan1row1.Items.Add(New RibbonRowBreak())
pan1row1.Items.Add(pan1button3)
pan1row1.Items.Add(New RibbonRowBreak())
pan1row1.Items.Add(pan1ribcombo1)
panel1Panel.Items.Add(pan1button1)
panel1Panel.Items.Add(New RibbonSeparator())
panel1Panel.Items.Add(pan1row1)
Dim panel2Panel As New RibbonPanelSource()
panel2Panel.Title = "Panel2"
Dim panel2 As New RibbonPanel()
panel2.Source = panel2Panel
Tab.Panels.Add(panel2)
Dim pan2splitButton As New RibbonSplitButton()
pan2splitButton.Text = "SplitButton"
'Required not to crash AutoCAD when using cmd locators
pan2splitButton.CommandHandler = New RibbonCommandHandler()
pan2splitButton.ShowText = True
pan2splitButton.ShowImage = True
pan2splitButton.Image = Images.getBitmap(My.Resources.Small)
pan2splitButton.LargeImage = Images.getBitmap(My.Resources.large)
pan2splitButton.IsSplit = True
pan2splitButton.Size = RibbonItemSize.Large
Dim pan2button1 As New RibbonButton()
pan2button1.Text = "Button1"
pan2button1.ShowText = True
pan2button1.ShowImage = True
pan2button1.Image = Images.getBitmap(My.Resources.Small)
pan2button1.LargeImage = Images.getBitmap(My.Resources.large)
pan2button1.Size = RibbonItemSize.Large
pan2button1.Orientation = System.Windows.Controls.Orientation.Vertical
pan2button1.CommandHandler = New RibbonCommandHandler()
Dim pan2button2 As New RibbonButton()
pan2button2.Text = "Button2"
pan2button2.ShowText = True
pan2button2.ShowImage = True
pan2button2.Image = Images.getBitmap(My.Resources.Small)
pan2button2.LargeImage = Images.getBitmap(My.Resources.large)
pan2button2.CommandHandler = New RibbonCommandHandler()
Dim pan2button3 As New RibbonButton()
pan2button3.Text = "Button3"
pan2button3.ShowText = True
pan2button3.ShowImage = True
pan2button3.Image = Images.getBitmap(My.Resources.Small)
pan2button3.LargeImage = Images.getBitmap(My.Resources.large)
pan2button3.CommandHandler = New RibbonCommandHandler()
pan2splitButton.Items.Add(pan2button1)
pan2splitButton.Items.Add(pan2button2)
Dim pan2row1 As New RibbonRowPanel()
pan2row1.Items.Add(pan2button2)
pan2row1.Items.Add(New RibbonRowBreak())
pan2row1.Items.Add(pan2button3)
pan2row1.Items.Add(New RibbonRowBreak())
pan2row1.Items.Add(New RibbonCombo())
panel2Panel.Items.Add(pan2splitButton)
panel2Panel.Items.Add(pan2row1)
Dim panel3Panel As New RibbonPanelSource()
panel3Panel.Title = "Panel3"
Dim panel3 As New RibbonPanel()
panel3.Source = panel3Panel
Tab.Panels.Add(panel3)
Dim pan3button1 As New RibbonButton()
pan3button1.Text = "Button1"
pan3button1.ShowText = True
pan3button1.ShowImage = True
pan3button1.Image = Images.getBitmap(My.Resources.Small)
pan3button1.LargeImage = Images.getBitmap(My.Resources.large)
pan3button1.Size = RibbonItemSize.Large
pan3button1.Orientation = System.Windows.Controls.Orientation.Vertical
pan3button1.CommandHandler = New RibbonCommandHandler()
Dim pan3button2 As New RibbonButton()
pan3button2.Text = "Button2"
pan3button2.ShowText = True
pan3button2.ShowImage = True
pan3button2.Image = Images.getBitmap(My.Resources.Small)
pan3button2.LargeImage = Images.getBitmap(My.Resources.large)
pan3button2.Size = RibbonItemSize.Large
pan3button2.Orientation = System.Windows.Controls.Orientation.Vertical
pan3button2.CommandHandler = New RibbonCommandHandler()
Dim pan3button3 As New RibbonButton()
pan3button3.Text = "Button3"
pan3button3.ShowText = True
pan3button3.ShowImage = True
pan3button3.Image = Images.getBitmap(My.Resources.Small)
pan3button3.LargeImage = Images.getBitmap(My.Resources.large)
pan3button3.CommandHandler = New RibbonCommandHandler()
Dim pan3button4 As New RibbonButton()
pan3button4.Text = "Button4"
pan3button4.ShowText = True
pan3button4.ShowImage = True
pan3button4.Image = Images.getBitmap(My.Resources.Small)
pan3button4.LargeImage = Images.getBitmap(My.Resources.large)
pan3button4.CommandHandler = New RibbonCommandHandler()
Dim pan3button5 As New RibbonButton()
pan3button5.Text = "Button5"
pan3button5.ShowText = True
pan3button5.ShowImage = True
pan3button5.Image = Images.getBitmap(My.Resources.Small)
pan3button5.LargeImage = Images.getBitmap(My.Resources.large)
pan3button5.CommandHandler = New RibbonCommandHandler()
Dim pan3row1 As New RibbonRowPanel()
pan3row1.Items.Add(pan3button3)
pan3row1.Items.Add(New RibbonRowBreak())
pan3row1.Items.Add(pan3button4)
pan3row1.Items.Add(New RibbonRowBreak())
pan3row1.Items.Add(pan3button5)
panel3Panel.Items.Add(pan3button1)
panel3Panel.Items.Add(pan3row1)
Dim pan4Panel As New RibbonPanelSource()
pan4Panel.Title = "Panel4"
Dim Panel4 As New RibbonPanel()
Panel4.Source = pan4Panel
Tab.Panels.Add(Panel4)
Dim pan4button1 As New RibbonButton()
pan4button1.Text = "Button1"
pan4button1.ShowText = True
pan4button1.ShowImage = True
pan4button1.Image = Images.getBitmap(My.Resources.Small)
pan4button1.LargeImage = Images.getBitmap(My.Resources.large)
pan4button1.Size = RibbonItemSize.Large
pan4button1.Orientation = System.Windows.Controls.Orientation.Vertical
pan4button1.CommandHandler = New RibbonCommandHandler()
Dim pan4button2 As New RibbonButton()
pan4button2.Text = "Button2"
pan4button2.ShowText = True
pan4button2.ShowImage = True
pan4button2.Image = Images.getBitmap(My.Resources.Small)
pan4button2.LargeImage = Images.getBitmap(My.Resources.large)
pan4button2.CommandHandler = New RibbonCommandHandler()
Dim pan4button3 As New RibbonButton()
pan4button3.Text = "Button3"
pan4button3.ShowText = True
pan4button3.ShowImage = True
pan4button3.Image = Images.getBitmap(My.Resources.Small)
pan4button3.LargeImage = Images.getBitmap(My.Resources.large)
pan4button3.CommandHandler = New RibbonCommandHandler()
Dim pan4button4 As New RibbonButton()
pan4button4.Text = "Button4"
pan4button4.ShowText = True
pan4button4.ShowImage = True
pan4button4.Image = Images.getBitmap(My.Resources.Small)
pan4button4.LargeImage = Images.getBitmap(My.Resources.large)
pan4button4.Size = RibbonItemSize.Large
pan4button4.Orientation = System.Windows.Controls.Orientation.Vertical
pan4button4.CommandHandler = New RibbonCommandHandler()
Dim pan4ribcombobutton1 As New RibbonButton()
pan4ribcombobutton1.Text = "Button1"
pan4ribcombobutton1.ShowText = True
pan4ribcombobutton1.ShowImage = True
pan4ribcombobutton1.Image = Images.getBitmap(My.Resources.Small)
pan4ribcombobutton1.LargeImage = Images.getBitmap(My.Resources.large)
pan4ribcombobutton1.CommandHandler = New RibbonCommandHandler()
Dim pan4ribcombobutton2 As New RibbonButton()
pan4ribcombobutton2.Text = "Button2"
pan4ribcombobutton2.ShowText = True
pan4ribcombobutton2.ShowImage = True
pan4ribcombobutton2.Image = Images.getBitmap(My.Resources.Small)
pan4ribcombobutton2.LargeImage = Images.getBitmap(My.Resources.large)
pan4ribcombobutton2.CommandHandler = New RibbonCommandHandler()
pan3ribcombo.Width = 150
pan3ribcombo.Items.Add(pan4ribcombobutton1)
pan3ribcombo.Items.Add(pan4ribcombobutton2)
pan3ribcombo.Current = pan4ribcombobutton1
Dim vvorow1 As New RibbonRowPanel()
vvorow1.Items.Add(pan4button2)
vvorow1.Items.Add(New RibbonRowBreak())
vvorow1.Items.Add(pan4button3)
vvorow1.Items.Add(New RibbonRowBreak())
vvorow1.Items.Add(pan3ribcombo)
pan4Panel.Items.Add(pan4button1)
pan4Panel.Items.Add(vvorow1)
pan4Panel.Items.Add(New RibbonSeparator())
pan4Panel.Items.Add(pan4button4)
Tab.IsActive = True
End Sub
Public Class RibbonCommandHandler
Implements System.Windows.Input.ICommand
Public Function CanExecute(ByVal parameter As Object) As Boolean
Return True
End Function
Public Event CanExecuteChanged As EventHandler
Public Sub Execute(ByVal parameter As Object)
Dim doc As Document = acadApp.DocumentManager.MdiActiveDocument
If TypeOf parameter Is RibbonButton Then
Dim button As RibbonButton = TryCast(parameter, RibbonButton)
doc.Editor.WriteMessage(vbLf & "RibbonButton Executed: " + button.Text & vbLf)
End If
End Sub
Public Function CanExecute1(ByVal parameter As Object) As Boolean Implements System.Windows.Input.ICommand.CanExecute
End Function
Public Event CanExecuteChanged1(ByVal sender As Object, ByVal e As System.EventArgs) Implements System.Windows.Input.ICommand.CanExecuteChanged
Public Sub Execute1(ByVal parameter As Object) Implements System.Windows.Input.ICommand.Execute
End Sub
End Class
Public Class Images
Public Shared Function getBitmap(ByVal image As Bitmap) As BitmapImage
Dim stream As New MemoryStream()
image.Save(stream, ImageFormat.Png)
Dim bmp As New BitmapImage()
bmp.BeginInit()
bmp.StreamSource = stream
bmp.EndInit()
Return bmp
End Function
End Class
End Class
End Namespace