Hi Group.
I have an old VB6 application which loads a number of gui controls
from an inifile and for each control the inifile states the name of
the vbscript that should be executed once the control is clicked or
otherwise triggered.
My question is whether it is possible to execute the vb scripts from
C#? There are multiple scripts in the same file.
If that is not possible I sure would like a hint about how I create a
winforms app where the eventhandler is defined at runtime, not
compiletime.
TIA
Kasper
Marc Gravell - 10 Feb 2008 23:32 GMT
Well, the simplest way is to store something useful in the tag, and
simply have a shared handler, i.e.
private void foo_Clicked(object sender, EventArgs args) {
Control cont = sender as Control;
if(cont!= null) {
// do something with cont.Tag
}
}
Then when looping:
foreach(whatever) {
SomeControl foo = new SomeControl();
// init
foo.Tag = {something useful}; // could also use Name I suppose
foo.Clicked += foo_Clicked;
}
Depending on needs, you can do things a lot more sophisticated.
Marc
Marc Gravell - 10 Feb 2008 23:33 GMT
(you'll also need to add each "foo" onto the form somewhere ;-p)
Marc
Cor Ligthert[MVP] - 11 Feb 2008 00:54 GMT
Kasper,
Would it not better to make this really good. As this is your design, then
in my opinion is using C# withouth sense. I would find then VB6 (If I knew
that program languqage good) probably a better option.
However, it would be in VB6 then probably as unsafe as it would be in C#.
Cor
Nicholas Paldino [.NET/C# MVP] - 11 Feb 2008 01:05 GMT
Kasper,
I think that the best option here is to refactor the VB6 app so that the
UI is contained in hostable ActiveX controls and then host those controls in
your C# app, and let the VB6 code that is being interoped with handle the
script (as you were before).

Signature
- Nicholas Paldino [.NET/C# MVP]
- mvp@spam.guard.caspershouse.com
> Hi Group.
>
[quoted text clipped - 12 lines]
>
> Kasper