Option Explicit
Public Event MoodChanged(Mood As String)
Private moodCounter As Integer
Private Sub Timer1_Timer()
Dim currentMood As String
If moodCounter = 0 Then
currentMood = "Happy"
ElseIf moodCounter = 1 Then
currentMood = "Sad"
Else
currentMood = "Sleepy"
End If
Label1.Caption = "COM OCX says it's " & currentMood
RaiseEvent MoodChanged(currentMood)
moodCounter = IIf(moodCounter = 2, 0, moodCounter + 1)
End Sub
Private Sub UserControl_Initialize()
moodCounter = 0
Timer1.Enabled = True
Timer1.Interval = 3000
End Sub
Public Property Let Mood(ByVal value As String)
Label1.Caption = "COM OCX has been told it's " & value
End Property
AxImp.exe Moods.ocx /out:MoodsAx.dllThis will create two dlls for you that wrap your OCX.
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AxMoods;
namespace DotNet{
public class Form1 : Form{
private Label moodLabel;
private AxMood axMood;
private TextBox textBox;
public Form1(){
this.axMood = new AxMood();
this.axMood.MoodChanged += new __Mood_MoodChangedEventHandler(this.mood_MoodChanged);
this.axMood.Width = this.Width;
this.moodLabel = new Label();
this.moodLabel.Width = this.Width;
this.moodLabel.Text = "Waiting to hear what mood our ocx is in ...";
this.moodLabel.Top = 60;
this.textBox = new TextBox();
this.textBox.Top = this.moodLabel.Top + 30;
Button button = new Button();
button.Top = textBox.Top;
button.Left = textBox.Width;
button.Width = 100;
button.Text = "Change Mood";
button.Click += new EventHandler(this.button_Click);
this.Controls.Add(textBox);
this.Controls.Add(button);
this.Controls.Add(this.moodLabel);
this.Controls.Add(axMood);
}
void button_Click(object sender, EventArgs e){
this.axMood.Mood = this.textBox.Text;
}
void mood_MoodChanged(object sender, __Mood_MoodChangedEvent e){
this.moodLabel.Text = ".NET knows COM OCX is " + e.mood;
}
}
}
Listed below are links to blogs that reference this entry: ActiveX OCX and Windows.Forms Interop: Properties and Events.
TrackBack URL for this entry: http://www.rootsilver.com/mt-tb.cgi/86
Leave a comment