|
I am using .Net remoting in windows 2003.
Remoting channel i am using is "pipe".
Now the problem is i am not able to get the proxy object for the remote object.
my config files are:
for client:
------------
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown type="CECAdapter, ArECA" url="pipe://MyPipe/ecadapter.rem">
<client>
<wellknown type="ConfigMgr, ArConfigMgr" url="pipe://MyPipe/ConfigMgr.rem">
<client>
<wellknown type="DCEventManager, ArSysEventMgmt" url="pipe://MyPipe/DCEventManager.rem">
<client>
<wellknown type="RegnServer, ArRegnServer" url="pipe://MyPipe/RegnServer.rem">
<channels>
<channel type="Remoting.Pipe.PipeChannel,Remoting.Pipe,Version=1.0.1.0, Culture=neutral,PublicKeyToken=151990e70f5d092b" pipe="Auto">
for server:
------------
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="Singleton" type="CECAdapter, ArECA" objecturi="ecadapter.rem">
<service>
<wellknown mode="Singleton" type="ConfigMgr, ArConfigMgr" objecturi="ConfigMgr.rem">
<service>
<wellknown mode="Singleton" type="DCEventManager, ArSysEventMgmt" objecturi="DCEventManager.rem">
<service>
<wellknown mode="Singleton" type="RegnServer, ArRegnServer" objecturi="RegnServer.rem">
<channels>
<channel type="Remoting.Pipe.PipeChannel,Remoting.Pipe,Version=1.0.1.0, Culture=neutral,PublicKeyToken=151990e70f5d092b" pipe="MyPipe">
Can any body help me to resolve the issue.
|
|
|
|
|
You should select "Do not treat <'s as HTML tags" or encode the brackets with & l t ; and & g t ; (no spaces)
Charlie
<font color="blue">if</font>(!curlies){ <font color="blue">return</font>; }
|
|
|
|
|
I'm having some inconsistency problems with my deployment project ("Setup") and its custom actions ("Installer"). I'm using Visual Studio .NET 2003 (.NET 1.1, no service pack) on Windows XPSP1.
My main project is a band object (Explorer Bar) in an assembly (.DLL) that needs to be registered on installation and unregisted on uninstallation. In addition, during installation, Setup creates registry subkeys, sets registry values, installs some application files, and adds a new file-type. On uninstallation, Setup is supposed to undo all of that. More specifically, I have custom actions for Setup that are run within the Installer class. The Installer class is within the main assembly, and perhaps surprisingly, that seems to work, some of the time. I have also tried putting the Installer class in its own assembly, both as a class library and as a console application, and that doesn't seem to work any better than having the Installer class in the main assembly. Sometimes the registration or unregistration of the main assembly fails. The workaround we tell our users (a small userbase so far, fortunately) is to "repair" after installation, or to uninstall completely before installing a new version. Neither are as ideal as being able to simply install over the previous version. I think there are two subproblems.
1) The Uninstall custom action in the Installer class isn't always called. This is especially inconsistent. My Installer class overrides OnBeforeUninstall() [so that the main assembly is unregistered before the files are removed] and Uninstall() [so that savedState is empty, in order for the installState to be removed]. Lacking better debugging tools for MSIs, I added code in these methods to set registry entries containing the timestamp at the beginning and end of each of these methods. I verified that usually the Uninstall custom action is (but not always) called when the user explicitly asks to remove the package (via "Add/Remove Programs"), but when the user is installing over a previous version, sometimes (but not always) the Uninstall custom action is called. As a side note, I change the installer version, PackageCode, and ProductCode whenever I build a new installer. I don't understand why these inconsistencies occur. For a while I thought VS.NET might randomly corrupt the Setup.vdproj file and that I'd have to remove and add the custom actions again, in order to be sure that the Uninstall custom action was registered, and once or twice I built the Setup.vdproj file from scratch, fearing general corruption in the file. This seemed to help (especially the latter), but not for too long, and it's not a sustainable solution, even if it's not a placebo. In addition, which may or may not be related, the Setup.MSI doesn't seem to always uninstall all registry entries, and because of that, I've had to add a few lines to my Uninstall custom action. It doesn't seem right to me that the MSI would sometimes not uninstall registry entries that it added in the first place.
2) The second subproblem is more specific to my project, and this occurs sometimes when I'm registering the main assembly. The main assembly is registered in the overridden OnCommitted() method of the Installer class, presumably after the previous version's main assembly was unregistered in the OnBeforeUninstall() method. In the case where the previous version and the new version were installed in the same "Program Files" folder, the assembly containing the Installer class will have the same exact CodeBase, but they'll of course have a different FullName because the assembly version has been automatically incremented. It seems that sometimes the Commit custom action will re-register the old assembly instead of registering the new assembly. My registration code looks like this:
RegistrationServices rs = new RegistrationServices();
rs.RegisterAssembly(MyAssembly, AssemblyRegistrationFlags.SetCodeBase); and my unregistration code looks like this:
RegistrationServices rs = new RegistrationServices();
rs.UnregisterAssembly(MyAssembly); MyAssembly is defined as a property:
Assembly MyAssembly
{
get
{
return Assembly.LoadFile(InstallDirectory + "assembly.dll");
}
} I used to use Assembly.Load(path) instead, but it seemed that Assembly.LoadFile(path) worked better. My concern is that either the Uninstall and Commit custom actions share an AppDomain, so sometimes MyAssembly might return the previous assembly during the Commit phase if the previous assembly wasn't somehow still in Commit's AppDomain after Uninstall finished. I tried creating a temporary AppDomain and then loading the assemblies within that, but it threw a deserialization exception. I suppose the overall issue of this subproblem is that I'm trying to register and unregister assemblies without knowing the FullName of either assembly, as I'm trying to semi-automate the build process and stay within VS.NET as much as possible (for now).
I know these are complex and possibly peculiar problems! While I'd love for someone to post a solution for either (or both!) subproblems, at the very least, I'd appreciate hearing tips regarding debugging deployment projects and custom installation classes, similar stories of installer woes and solutions, and recommendations for possibly better installation/deployment tools than VS.NET's deployment projects. Something like InstallShield seems like overkill, but maybe it's what I need to have dependable installations.
Thanks for reading this far!
Arun
|
|
|
|
|
This is not much help. I've had problems with running custom actions on uninstall as well and I have not yet resolved them.
One thing you can do to at least try to get some more information is to create a full log file of the installer actions.
Run your msi package from the command line using the following verbose logging command line options and it will generate a complete log. Unfortunately, interpreting the log is another matter, and acting upon that interpretation still another ...
But it is a starting point at least.
Typical command line is:
msiexec.exe /L*v "C:\MySetup.log" /I "C:\MySetup.msi"
i.e.
msiexec.exe /L*v <fully qualified path/filename for the log to create> /I <fully qualified path to the msi you want to run in verboise logging mode>
Good Luck!
Robert
|
|
|
|
|
Thanks for your reply! I have been looking at the full log file off and on for several months, and I don't see anything in there explaining my problems, especially why the Uninstall custom action sometimes doesn't run.
|
|
|
|
|
Do you think our deployment projects have anything in common besides the obvious (.NET, etc.)? Is there some way we could work together on solving this?
|
|
|
|
|
Actually mine was very simple.
I'm sure you've seen the MSDN walkthroughs on how to create a custom action to compile NET assemblies into Native Images on the target machine. Well when that happens it adds an entry for each native image into a system table (you can view the list with ngen /L command I think.)
All I was trying to accomplish was creating a "well behaved setup" that would remove any Native Image entries it created using the Uninstall event.
It was a while back and I don't really remember much. I do remember that it should have been simple, but I never got it to work, and got tired of messing with it.
I came to the conclusion that the Installer class worked fine for Install actions, but because I had problems getting even a simple uninstall action to run, I pretty much decided to abandon using them.
I think that until I can afford to get InstallShield, I'll go with creating a C++ dll to run any sort custom actions and just manually edit the Action tables in the msi to make sure my uninstall action calls in a DLL are made during an uninstall before the dll itself is removed.
There are some other things I don't like about the msi packages created with the NET IDE anyway, so I've devoted more time to learning about manually creating entire installs using Orca rather than digging any further into the Installer class.
Sorry ...
Robert
|
|
|
|
|
Ah, okay. Well, I think most of my critical woes are gone now. I was trying to register assemblies in a custom action, and that was a bad idea, so I let the MSI handle the registration. I still notice that the MSI doesn't seem to delete some registry entries that it added, and perhaps sometimes the Uninstall custom action isn't called, but that's more of a matter of tidying up the registry than something critical.
(I try to clean up the Registry after myself, but it's not my fault if the MSI sometimes can't be bothered to do it.)
Thanks!
Arun
|
|
|
|
|
Yes. I try for clean uninstalls, but at some point sometimes you have to just let it go.
I've never seen a Microsoft product itself that said it was logo certified????
And some of their setups are pretty bad.
When they released the eval versions of SQL Server 2000, I got one and put it on my machine. It ruined my MSDE server, and I had to go in and do massive manual registry cleanups to get MSDE installed back on my machine and working properly.
Now I do registry backups before I install anything from Microsoft, LOL.
Robert
|
|
|
|
|
Pretty funny stuff! Sad but true...
|
|
|
|
|
Hi friends,
I need help to design a main page on ASP.NET like my.msn.com has; there are three columns in a page and in a column can contain multiple panes. furthermore, a pane can drag and move into any column.
It is really wonderful idea. but how can I implement this style in my Application?
|
|
|
|
|
Hello to all.
I know how to program but I am not that good in .NET
In my main form (form1) I create 2 arrays within a panel. One with buttons and textboxes and the other array with labels who give the state of the 1ste array.
This is created by executing class1 and class2
The problem is that when I click on a button in panel1 (array1) then the state of that button, tagged textbox and my global variable (class global) change but, I want to change the label in panel2 (array2) to but that generates an error when I click on it and I don’t know how to interpret that error or what to do with it.
Properly my bad English or lake of .NET knowledge.
Can somebody help me?
The error is ‘An unhandled exception of type 'System.NullReferenceException' occurred in test.exe
Additional information: Object reference not set to an instance of an object.’
<code>public Class Form1
Inherits System.Windows.Forms.Form
Dim MyArray1 As Array1
Dim MyArray2 As Array2
Dim Filibits As Integer
Public Sub New()
MyBase.New()
InitializeComponent()
MyArray1 = New Array1(Me.Panel1)
MyArray1.AddNewFilibitControl(7, 19)
MyArray2 = New Array2(Me.Panel2)
MyArray2.AddNewStatusControl(7, 19)
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Skiped the ‘Required by the Windows Form Designer’ and other not needed functions for this matter
End Class</code>
<code>Option Strict Off
Public Class Array1
Inherits System.Collections.CollectionBase
Private ReadOnly Host1 As System.Windows.Forms.Panel
Public BtnColorOn, BtnColorOff, BtnColorNA, BtnColorF, BtnColorT As System.Drawing.Color
Public Function AddNewGlobal(ByVal Index As Integer, ByVal Used As Integer)
Dim aTextBox As New System.Windows.Forms.TextBox
Me.List.Add(aTextBox)
Host1.Controls.Add(aTextBox)
aTextBox.MaxLength = 16
aTextBox.Height = 20
aTextBox.Width = 90
aTextBox.Left = 90 * (Index Mod 2) + (42 * (Index Mod 2))
aTextBox.Top = (30 * (Index \ 2)) + 2
Global.SetData(1, Index) = "Locatie # " & CStr(Index + 1)
Global.SetData(0, Index) = CStr(CInt(True))
aTextBox.Text = Microsoft.VisualBasic.Left(Global.GetData(1, Index), 16)
If Used < Index Then
aTextBox.Enabled = False
Else
aTextBox.Enabled = True
End If
aTextBox.Tag = Index
AddHandler aTextBox.TextChanged, AddressOf WhenTextChanged
Dim aButton As New System.Windows.Forms.Button
Me.List.Add(aButton)
Host1.Controls.Add(aButton)
aButton.Height = 24
aButton.Width = 40
aButton.Left = 90 * (Index Mod 2) + 90 + (42 * (Index Mod 2))
aButton.Top = (30 * (Index \ 2))
aButton.TextAlign = ContentAlignment.MiddleCenter
aButton.Name = "Button"
If Used < Index Then
aButton.Enabled = False
aButton.BackColor = BtnColorNA
aButton.Text = "N/A"
Else
aButton.Text = "ON"
aButton.BackColor = BtnColorOn
aButton.Enabled = True
End If
aButton.Tag = aTextBox
AddHandler aButton.Click, AddressOf OnOff_ClickHandler
End Function
Public Function AddNewFilibitControl(ByVal Used As Integer, ByVal Total As Integer) As Boolean
Dim Counter As Integer
For Counter = 0 To Total
Me.AddNewGlobal(Counter, Used)
Next
End Function
Public Sub New(ByVal host As System.Windows.Forms.Panel)
Host1 = host
BtnColorOn = System.Drawing.Color.Green
BtnColorOff = System.Drawing.Color.Yellow
BtnColorNA = System.Drawing.SystemColors.Control
End Sub
Public Sub OnOff_ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)
Dim MyArray2 As Array2
Dim IndexArray As Integer = CType(Host1.Controls.IndexOf(CType(sender, System.Windows.Forms.Button).Tag), Integer)
If TypeOf sender Is Button Then
' Create a button object to use in its place
Dim myButton As Button = CType(sender, System.Windows.Forms.Button)
' Check to see if the Button has a TextBox in its Tag property
If TypeOf myButton.Tag Is TextBox Then
CType(myButton.Tag, TextBox).Enabled = Not CType(myButton.Tag, TextBox).Enabled
Global.SetData(0, Int(IndexArray / 2)) = CStr(CInt(CType(myButton.Tag, TextBox).Enabled))
If True Then
If CType(myButton.Tag, TextBox).Enabled Then
CType(myButton, Button).Text = "ON"
CType(myButton, Button).BackColor = BtnColorOn
Else
CType(myButton, Button).Text = "OFF"
CType(myButton, Button).BackColor = BtnColorOff
MyArray2.Off(5) ‘<<<<< ERROR LINE >>>>>
End If
End If
Global.SetData(0, Int(IndexArray / 2)) = CStr(CInt(CType(myButton.Tag, TextBox).Enabled))
End If
End If
End Sub
Private Sub WhenTextChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim myTextBox As TextBox = CType(sender, TextBox)
Dim RelIndex As Integer = CType(CType(sender, System.Windows.Forms.TextBox).Tag, Integer)
Global.SetData(1, RelIndex) = myTextBox.Text
End Sub
End Class</code>
<code>Option Strict Off
Public Class Array2
Inherits System.Collections.CollectionBase
Private ReadOnly Host2 As System.Windows.Forms.Panel
Public BtnColorOn, BtnColorOff, BtnColorNA As System.Drawing.Color
Public Function AddNewLabelTransponderStatus(ByVal Index As Integer, ByVal Used As Integer) As System.Windows.Forms.Label
Dim aLabel As New System.Windows.Forms.Label
' Add a Label to the collection's internal list.
Me.List.Add(aLabel)
' Add the button to the controls collection of the form
' referenced by the HostForm field.
Host2.Controls.Add(aLabel)
' Set intial properties for the button object.
aLabel.Height = 24
aLabel.Width = 40
aLabel.Left = 90 * (Index Mod 2) + (42 * (Index Mod 2))
aLabel.Top = (30 * (Index \ 2))
aLabel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
aLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
aLabel.TextAlign = ContentAlignment.MiddleCenter
aLabel.Name = "Label"
aLabel.Tag = Index
If Used < Index Then
aLabel.BackColor = BtnColorNA
aLabel.Text = "NIC"
Else
aLabel.Text = "ON"
aLabel.BackColor = BtnColorOn
End If
End Function
Public Function AddNewStatusControl(ByVal Used As Integer, ByVal Total As Integer) As Boolean
Dim Counter As Integer
For Counter = 0 To Total
Me.AddNewLabelTransponderStatus(Counter, Used)
Next
End Function
Public Function Off(ByVal IndexArray As Integer)
Me.Host2.Controls(IndexArray).Enabled = False
End Function
Public Sub New(ByVal Host As System.Windows.Forms.Panel)
Host2 = Host
BtnColorOn = System.Drawing.Color.Green
BtnColorOff = System.Drawing.Color.Yellow
BtnColorNA = System.Drawing.SystemColors.Control
End Sub
Default Public ReadOnly Property Item(ByVal Index As Integer)
Get
If Me.List.Item(Index).GetType.Name = "TextBox" Then
Return CType(Me.List.Item(Index), System.Windows.Forms.TextBox)
ElseIf Me.List.Item(Index).GetType.Name = "Button" Then
Return CType(Me.List.Item(Index), System.Windows.Forms.Button)
ElseIf Me.List.Item(Index).GetType.Name = "Label" Then
Return CType(Me.List.Item(Index), System.Windows.Forms.Label)
End If
End Get
End Property
End Class</code>
Marco
|
|
|
|
|
NullReferenceException means that you are attempting to use a variable that has not been initialized. In OnOff_ClickHandler, you declare MyArray2 to be of type Array2 but you never instantiate it, which is why the line MyArray2.Off(5) throws a NullReferenceException .
Charlie
if(!curlies){ return; }
|
|
|
|
|
Charlie,
Ok, but when I do that Ill get Argument not specified for parameter 'Host' of 'Public Sub New(Host As System.Windows.Forms.Panel)'.
I don't get it?
Marco
|
|
|
|
|
The constructor in Array2 takes a Panel as an argument. Obviously, you'll need to provide one.
Charlie
if(!curlies){ return; }
|
|
|
|
|
I have added this
Dim MyArray2 As Array2<br />
Dim panel2 As System.Windows.Forms.Panel
And this in the clickhandler
MyArray2 = New Array2(panel2)
That seems to work when calling MyArray2.Off(5) Ill end up in Class2
Public Function Off(ByVal IndexArray As Integer)<br />
Me.Host2.Controls(IndexArray).Enabled = False<br />
End Function
then I get the next error 'Additional information: Object reference not set to an instance of an object' but if I call by a clickhander from a label create in class2 it works
When I make a reference then it's out of the range. OK wrong reference.
I am lost.
|
|
|
|
|
I haven't made an effort to understand the 200 lines of code you posted, nor do I plan to.
What is apparent, though, is that there are not 6 Control s contained in the Controls collection of Me.Host2 , so when you say Me.Host2.Controls(5).Enabled = False a NullReferenceException is thrown. You cannot access the properties of a null variable.
You need to fire up the debugger and step through your code, line by line, until you see the problem. Are you using the correct index into the ControlCollection ? Are you mistakenly creating a new local variable instead of accessing one at the class level?
The problem is there for the finding.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Thanks for your effort.
There a 20 Indexes.
When I use the debuger and hit F11 everthing is working fine until a press one of the 20 buttons.
Well I think I build a work around
MArco
|
|
|
|
|
A workaround for what? This isn't a limitation that needs to be circumvented. There is a bug in your code. The workaround is finding and squashing the bug.
Charlie
if(!curlies){ return; }
|
|
|
|
|
I can build the complete application in another matter in shuts a way the status panel is update when I click an particular button in other words build my own tabcontrole.
Is it a option that I mail you the code and that we squash the code together?
I'm trying to fix it for more then 4 days now.
Marco
|
|
|
|
|
DSLR wrote:
Is it a option that I mail you the code and that we squash the code together?
I'm sorry, but no. I'm lucky if I have enough time to debug my own code.
My advice would be to isolate the problem to as small a section of code as possible. Strip everything not directly related to it and try to reproduce the error with as little code as possible. When you do, the bug will probably jump out at you and you will (if you're like me) wonder how it escaped you for so long.
Good luck to you.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Ok, I went back and looked at the code you posted (against my better judgement, but what the heck).
It turns out the NullReferenceException you had originally asked about was a symptom of a questionable design. That's why pointing out the source of the exception didn't really solve your problem.
Let's see if I have this correct. You have a Form with two Panel controls. Each Panel contains a class which represents a group of controls (Array1 in Panel1 and Array2 in Panel2 ). When a button is clicked in Array1 on Panel1 , you want something to happen in Array2 on Panel2 . Do I have it right?
Ok, the original problem you posted with was that you got a NullReferenceException when you clicked a buttin in Array1 . The reason was that you were creating a new instance of Array2 instead of using the one you intended to, which is the one on Panel2 on Form1 .
One way of solving your problem would be giving the instance of Array1 a reference to the intance of Array2 . I personally think this would be kind of clunky because Array1 shouldn't need to have any knowledge of Array2 .
Since you are wanting to do something in an unrelated class (Array2 ) when something happens in Array1 , I think this would be the ideal place for an event. Declare an event in Array1 which gets fired anytime a button is clicked. You can define a class that inherits from EventArgs if there is additional information that you'd like to pass along when the event is fired (index of the button clicked, etc.) If you define an event args class, you'll also need to define a delegate that the handlers of this event will use as a signature. You can then define an event handler in Array2 that handles this event.
Once you've got that all set up, an object common to both classes (Form1 , for instance) would hook the event up after instantiating both ojects and you're good to go.
If you have questions about the way events work in VB.NET, I'd suggest MSDN or Google, which are both excellent resources. If you have a specific question about any of my suggestions, ask away. Please don't ask me to write the code, though.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Thanks for looking in to it.
Do I have it right? Yes you have.
I have an event for every button and Text change in Function AddNewGlobal for the button AddHandler aButton.Click, AddressOf OnOff_ClickHandler for the text AddHandler aTextBox.TextChanged, AddressOf WhenTextChanged
In the OnOff_ClickHandler event there the row MyArray2.Off(5) the 5 has to be the index form the clicked button Dim IndexArray As Integer = CType(Host1.Controls.IndexOf(CType(sender, System.Windows.Forms.Button).Tag), Integer) I did the 5 to be shure
I have simplified the code.
Got some hinds, tips and how to’s but I don’t get it
.NET isn’t my thing.
I give up
|
|
|
|
|
DSLR wrote:
In the OnOff_ClickHandler event there the row MyArray2.Off(5)
The point I was trying to make was that the way you have it set up now Array1 has to have knowledge of Array2 (that it has an Off method or that it even exists) when it shouldn't need to. The events you mentioned are events of the individual controls in Array1 . What I'm talking about defining a custom event in Array1 that could be handled in Array2 .
Think about the System.Windows.Forms.Button class. It doesn't know or care about the Panel class or a custom user control you might put it in. It doesn't require a reference to the control that contains it or need to know the name of any methods the containing control defines. You can execute a block of code every time the Button is clicked by subscribing to the Click event, just as you've done.
Well, in Array2 , you want to execute a block of code every time any Button is clicked on Array1 . You should define an event, just like Button does, that notifies anyone that's interested when a Button is clicked. This doesn't require Array1 to have intimate knowledge of Array2 . Note also that you shouldn't subscribe to the Click event of each Button in Array1 from Array2 . That would require Array2 to have an inappropriate knowledge of Array1 .
The changes I'm proposing may seem complicated at first, but they will simplify your code if they are implemented. You'll be free to change code, class names, method names, etc. without worry. The only thing you'll be concerned with is having Array1 shout to the world, "Hey, somebody clicked one of my buttons!" (firing an event) and having Array2 listen for that shout (subscribing to the event).
DSLR wrote:
.NET isn’t my thing. ...I give up
That's your choice, of course. Delegates and events aren't always the easiest thing to grasp at first glance. If you power through it, you'll be a better developer. It will take effort, but it's well worth it, IMO.
Here is a popular CodeProject article on events and delegates[^]. It may help the pieces fall into place and make what I'm saying start to make some sense.
Charlie
if(!curlies){ return; }
|
|
|
|
|
I understand what you saying
For testing I have added in form1
Public WithEvents myEvent As New Array1(New Panel) and added something to do when event is triggerd
Public Sub myEvent_Clicked(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles myEvent.Clicked<br />
MessageBox.Show("Button pressed")<br />
End Sub
To test the event I have added a button who's fireing the event in Array1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br />
myEvent.OnOff_ClickHandler(sender, e)<br />
End Sub
In Array1 there is the routine
Public Sub OnOff_ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)<br />
MessageBox.Show("Event routine")<br />
RaiseEvent Clicked(sender, e)<br />
End Sub
When I click button1 the event RaiseEvent Clicked(sender, e) is fired but when I click a button from the array panel with AddHandler aButton.Click, AddressOf OnOff_ClickHandler then nothing happed. I see the first message with "Event routine" appear but the second not
What's the different between a fixed button and a button from an array control?
In my opinion nothing but who am I
|
|
|
|
|