|
James T. Johnson wrote:
You should be able to call the base.OnMouseDown() method when you want to let the DataGrid handle the other things
Thank you James, that works like a bomb
I am getting a clearer picture of overriding and inheriting now.
regards,
Paul Watson
Bluegrass
Cape Town, South Africa
|
|
|
|
|
|
Nishant S wrote:
How can a Windows.Forms derived control's constructor differentiate between designer instantiation and run time instantiation?
LMAO I have exactly that same problem with CP+. Damned constructor loads some files which are obviously not present at design time, so then the Form Designer shows that horrid HRESULT 0x80131019 error. So far I have not found a way to get around it.
regards,
Paul Watson
Bluegrass
Cape Town, South Africa
|
|
|
|
|
You could get around this by delaying the loading of the file until the Load event of the UserControl and supplying reasonable default values until then (for the designer).
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
James T. Johnson wrote:
You could get around this by delaying the loading of the file until the Load event of the UserControl and supplying reasonable default values until then (for the designer).
What I did do though was put in a if (file.exists... condition in the constructor. If no file exists then hard coded defaults are used.
Still would be nice to know whether the app is in design time or run time in the constructor though.
Thanks James.
regards,
Paul Watson
Bluegrass
Cape Town, South Africa
|
|
|
|
|
In design time the default constructor gets called. So setup some example values with that.
MYrc : A .NET IRC client with C# Plugin Capabilities. See
http://sourceforge.net/projects/myrc for more info.
|
|
|
|
|
Nishant S wrote:
How can a Windows.Forms derived control's constructor differentiate between designer instantiation and run time instantiation?
Not in the constructor. The earliest you can do is in set accessor of Site property. You can check in that case Site.DesignMode.
(I was hoping that our RC#S - JTJ will have a better answer this so I left it)
|
|
|
|
|
|
Rama Krishna wrote:
Not in the constructor. The earliest you can do is in set accessor of Site property. You can check in that case Site.DesignMode
LOL, I couldn't think of why the Site property was always null in the constructor.
BTW, a more up-front property is the protected boolean property DesignMode , which aleviates a check of Site for null first.
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
James T. Johnson wrote:
LOL, I couldn't think of why the Site property was always null in the constructor
I meant to say he needed to overload the Site property
class MyComp : Component
{
public override System.ComponentModel.ISite Site
{
get
{
return base.Site;
}
set
{
base.Site = value;
//Now you can test for DesignMode property
}
}
}
}
|
|
|
|
|
|
No. The only font selection dialog is in the common controls dll.
Todd Smith
|
|
|
|
|
System.Windows.Forms.FontDialog
[Edit: *cough* *wheez* *gag* I sick, please ignore my ignorance *cough*]
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
Is it possible to draw a control outside of its parent's client
area, say, somewhere on the desktop?
|
|
|
|
|
I can't believe I've spent half a day surfing and reading and still haven't figured this out.
What is the .Net equivallent of coding a VISUAL COMPONENT meant to run IN THE BROWSER. Nothing server-side, purely client-side. The server will be a simple, static HTML vending server, no ISS.
What I need to do is the following, it should be simple, but seems impossible!!!
- I need to place a legacy ActiveX control on a web page.
- I need to author, in C#, a component which runs IN THE BROWSER and accesses the ActiveX component, through COM/Intertop generated assemblies (I'm hoping that if I just toss the interop dll's into the same cab as the compoent and it'll just work).
Problem #1: I can't even figure out what the heck the .Net equivalent of an ActiveX control is, for running in the browser. At first it seemed like WebControls...but those have "runat=server"? Can somebody point me to some sample code, anywhere?
I've coded up a simple WebControl, but can't figure out if it's the right best, and if it is even how to insert it into a HTML page! The samples I've found show them going into asp pages as script, that's not what I want obviously. I'm wondering if I am supposed to be using a regular .Net Framework Component and IE can host it? I only need IE support. Can IE6 support .Net framework components?
Problem #2: Once I get the above working, it needs to be able to reference an ActiveX control which is also on the same page. How do I do this? Can I write some script in the webpage that "passes" the activeX control into the .net control? can the .net control enumerate items on the page and find it that way? How is this done, if at all?
Thanks in advance, I've been stuck on this for far too long.
Rhino
|
|
|
|
|
I could be wrong but I haven't seen "Creating a COM object in C#". I've seen C# wrappers for existing COM objects and using COM objects from C# but not creating COM objects in C#.
I believe you'll have to use either VB or C++ to create an ActiveX/COM object.
A WebControl in C# is something that generates HTML output and runs server side. It's not the same as an ActiveX which typically runs client side.
Todd Smith
|
|
|
|
|
It is quite possible to expose .NET objects as COM objects. Chris Sells does this with his CollectionGen utility[^].
By default all types are exposed to COM, but this can be changed by applying the ComVisible(false) attribute to the assembly, class, method, field, or property.
That said, .NET doesn't really replace ActiveX in the browser it just provides another way of doing it.
Now if he wanted to show a user control inside the browser, that is possible; but I'm not sure how its done (this is the only supported way of using a .NET control in an ActiveX container).
From what he said though I think he wants an activex control that will output HTML from his input. It should be possible but you still have to go through all the work involved of implementing the correct interfaces.
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
If you plan to code a control that will run on the client's computer using any of the languages in .NET or the .NET framework, then the client side will have to have .NET installed for it to be able to work. You cannot code Active-X type controls for Win32 with the .NET tools.
Rocky Moore
|
|
|
|
|
I understand that I can't code ActiveX components with .Net. I understand that users will have to have the framework installed.
I guess I wasn't clear.
What I'm asking is what in .net framework is REPLACING our old abiliity to code activeX controls in the browser, so we can have thick/rich/smart web apps? Is it .Net Framework Components? Is it Windows Forms? I've learned (the hard way) that it is not WebControls, even though the name seems 100% accurate.
I would think that a visual .Net Framework Component / Control would be the answer, that seems to be the most direct replacement of the ActiveX control, but I can't figure out how to embed one in a browser.
I did find a way to embed a Windows Form in a browser, this seems to be the "replacement" I've been looking for, but there is no way that I've found to pass it in an ActiveX control via JS (or no way for it to find it itself), yet it is 100% able to host them itself. Either I'm missing something, or this seems like an interoperability / design deficiency.
Ryan
|
|
|
|
|
There is no "replacement" for ActiveX controls in .NET. A lot of .NET is designed just to make web programming easier/better/faster.
A Windows Form is just using IE/HTML to create a GUI instead of using MFC or Win32.
Maybe if you explained what problem you're trying to solve we could be of more assistance. At the moment it doesn't sound like .NET fits your needs.
Todd Smith
|
|
|
|
|
Todd Smith wrote:
A Windows Form is just using IE/HTML to create a GUI instead of using MFC or Win32.
Actually a Windows form *is* a Win32 window complete with a message pump provided by Application.Run .
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
I got close by trying a worksaround, but it's not quite working unfortunately. I got the idea from here:
http://msdn.microsoft.com/msdnmag/issues/02/07/NetSmartClients/default.asp
What I did was create a Windows Form which has the Active X instance on it. It actually works for some ActiveX controls, unfortunately the one I need can't be created when running under IEExec.exe due to threading model issue, it throws and IllegalThreadStateException or some such:
"Additional information: Could not instantiate ActiveX control 'fa13a9fa-ca9b-11d2-9780-00104b242ea3' because the current thread is not in a single-threaded apartment."
Does anybody know how to work around this latest snag? The .exe runs fine normally, but not through IE / IEExec.exe. Altering the threading model of the ActiveX is not an option, it's a vendors and I don't have the source.
So far what I've done is really easy, just build any old Windows Form application, then put the exe and all required associated assemblies up on a webserver. IE 5.5/6.0 can launch it directly and run via IEExec.exe, as long as .Net framework is installed.
Thanks,
Ryan
|
|
|
|
|
I GOT IT ALL WORKING!!!
I had to manage the thread creation myself, IEExec.exe does not honor the STAThread attribute.
So basically I have a .Net Windows Form application, running in the browser (sorta), hosting a legacy ActiveX control, and it all works.
Thanks for all the help.
Ryan
|
|
|
|
|
|
I have a button.I want to define shortcut key for it.For example (shift+a) or (alt+a).How can I do it?
Thanks
Mazy
"If I go crazy then will you still
Call me Superman
If I’m alive and well, will you be
There holding my hand
I’ll keep you by my side with
My superhuman might
Kryptonite"Kryptonite-3 Doors Down
|
|
|
|