|
|
Thanks Eric. It's nice to hear the answer from the source.
That explains why I couldn't get something like textBox.KeyDown.GetInvocationList() to compile.
Great articles, BTW.
Regards,
Alvaro
When birds fly in the right formation, they need only exert half the effort. Even in nature, teamwork results in collective laziness. -- despair.com
|
|
|
|
|
Hi,
I have a form with a RichTextBox on it and I also have an Edit menu that has cut, copy, paste in it. In the handlers for those menu commands I have code like this:
if (rtbNotepad.SelectionLength > 0)
rtbNotepad.Cut (); now everything with the RichTextBox works fine. The problem occurs when I try to paste into anything else. For example I have a regular textbox on the form and I can't cut/copy/paste into it with because the shortcuts are basically hardwired to the RichTextBox. The workaround I'm thinking of is to remove the shortcuts when the RTB loses focus and add them when it gains focus. I don't really like this idea but it's the only one I have at the moment. Does anyone have any better ideas for this problem?
thanks
- monrobot13
|
|
|
|
|
private System.ComponentModel.Container components = null;
I didn't think much of it until last night, when I was being careful to make sure that my Dispose() methods did all that they should.
VS.NET 2002 designer adds the above code to Windows forms/controls. Is this variable actually required by the designer -- it seems not -- and if not, why doesn't the designer actually make use of this elsewhere.
If Container.Dispose() disposed of its contained components, it seems like it could be smart to add controls, etc. to the components Container in the InitializeComponent() method, but I can't find any evidence of the former.
|
|
|
|
|
hi..everyone...
i need help~~
i want to use C# to write a program like this:
when richTextBox focus
a ListBox also gotfocus....and can move up and down
just like design C# code
when user key a keyword(ex: a class's name or a object's name) and key "."
having a listbox show the class's or object's method or property
please help me..................thanks
|
|
|
|
|
I'm having precision problems with the double type, the help files say I should get 15 digits of precision...
BUT...
double d1 = 12589230.0342;<br />
double d2 = -10.335927963256836;<br />
<br />
<br />
double newd = d1+d2;<br />
<br />
Where's all my precision????
I've tried decimal type, but is's incredibly slow.... I have to use it when multiplying, but addition of 10???
Any suggestions?
should I use my own type? Possibly a binary coded decimal
Thanks for any help.
-Sam
|
|
|
|
|
The result I see in the watch window is 12589219.698272036, not 12589220.0.
(the real result is 12589219.698272036743164).
The decimal type can be used (28 digit precision) :
decimal d1 = 12589230.0342M;
decimal d2 = -10.335927963256836M;
decimal d = d1 + d2;
and I get the real result in the watch window.
|
|
|
|
|
YOU'RE right!!!!!
Now that makes things even weirder....
My actual code....
public void Translate(double x, double y, double z)
{
foreach(DPoint p in points)
{
p.x += x;
p.y += y;
p.z += z;
}
}
a Dpoint is just 3 doubles x,y,z
on the first iteration of the foreach:
x=12589230.0342
y = 693719.8863
z = 0.0
p.x = -10.335927963256836
p.y = 9.6102085113525391
p.z = 5.7499995231628418
after first iteration
p.x = 12589220.0
p.y = 693729.5
p.z = 5.7499995231628418
I'm trying to replicate problem is a simple app now...
|
|
|
|
|
This snippet:
decimal px = -10.335927963256836M;<br />
<br />
<br />
decimal ix = 12589230.0342M;<br />
<br />
<br />
decimal nx= px + ix;<br />
<br />
double d = Convert.ToDouble(nx);<br />
<br />
double c = 2;
Works as long as it happens before this line:
device = new Device(graphicsSettings.AdapterOrdinal, graphicsSettings.DevType,
windowed ? ourRenderTarget : this , createFlags, presentParams);
If it happens the line after I get my problem....
now that is messed up, how can it change the behavior of a built in type????
|
|
|
|
|
OK, When you create a directx device it changes all operations to single precision. It can be overridden with the fpupreserve flag.
Thanks for the help.
-Sam
|
|
|
|
|
In C# how can I access a DataSet on Form1 from Form2?
Thanks
__________________
|
|
|
|
|
by making sure the member in Form1 has a public visibility.
|
|
|
|
|
I need help with the string.Format method. If someone could provide a link that offers a comprehensive explanation of all the formatting options (especially for numbers) I'd really appreciate it. In the mean time, here's I need the equivalent of this MFC code:
CString str;
int i = 6;
char c = 'a';
str.Format("%02d", i);
str.Format("%d", i);
str.Format("%02d%c", i, c);
str.Format("%4d", i);
str.Format("%-2d", i);
Thanks in advance!
Alvaro
When birds fly in the right formation, they need only exert half the effort. Even in nature, teamwork results in collective laziness. -- despair.com
|
|
|
|
|
int i = 6;
char c = 'a';
MessageBox.Show( String.Format("{0,2:00}",i) );
MessageBox.Show( String.Format("{0}",i) );
MessageBox.Show( String.Format("{0,2:00}{1,1}",i,c) );
MessageBox.Show( String.Format("{0,4}",i) );
MessageBox.Show( String.Format("{0,-2}",i) );
reference help[^].
|
|
|
|
|
Thanks .S.Rod!
I actually found this[^] nice link which fully explains this stuff in one page -- much better than MSDN.
I have a question on the first version, where you use {0,2:00} . In your opinion is that better than {0:D2} ?
Thanks again,
Alvaro
When birds fly in the right formation, they need only exert half the effort. Even in nature, teamwork results in collective laziness. -- despair.com
|
|
|
|
|
Alvaro Mendez wrote:
I have a question on the first version, where you use {0,2:00}. In your opinion is that better than {0:D2}?
Using {0:D2} to get 2 zero-padding on the left is just not the right semantics for the grammar. No one should use it.
I wouldn't use {0:D2} since the number just after the D is supposed to represent the amount of digits after the decimal, for instance {0:f3} to format floating numbers with 3 fraction decimals.
Since we are dealing with D, i.e. integers, this number is meaningless but MS choosed to implement it anyway.
|
|
|
|
|
.S.Rod. wrote:
Since we are dealing with D, i.e. integers, this number is meaningless but MS choosed to implement it anyway.
Incredible, so they gave the number after the D a totally different meaning since whole numbers don't have fractional parts anyway.
Thanks for the insight.
Alvaro
When birds fly in the right formation, they need only exert half the effort. Even in nature, teamwork results in collective laziness. -- despair.com
|
|
|
|
|
Recently jumped into .net bandwagon from VC++.
I have a few questions and I will be glad if you clarify them.
1. How to build a DLL in C#? The options I got are "Windows Application, ASP.NET Web Service, ASP.NET Web Application and Console Application"
2. What's the equivalent of friend (C++) in C#?
Don't and drive.
|
|
|
|
|
Kant wrote:
1. How to build a DLL in C#? The options I got are "Windows Application, ASP.NET Web Service, ASP.NET Web Application and Console Application"
Duah...I got standard version of C#.
Visual C# Standard Edition Features[^]
Kant wrote:
2. What's the equivalent of friend (C++) in C#?
Got it from here.[^]
Don't and drive.
|
|
|
|
|
Hi Kant,
Welcome to the C# from C++ boat!
I don't know the answer to the first question, but I'm pretty confident I can answer the second one.
The answer is: there isn't an equivalent.
The best way to work around it is qualifying those members which you want to make accessible as internal . This basically makes them public to any classes within the same assembly.
Regards,
Alvaro
When birds fly in the right formation, they need only exert half the effort. Even in nature, teamwork results in collective laziness. -- despair.com
|
|
|
|
|
HISTORY: I'm trying to get the javascript in a page to execute a method in my FAT client. I implemented the DLL from the article here on implementing IDocHostUIHandler. I implemented my own interface. I know IDocHostUIHandler is properly hooked because I am stopping the context menues from displaying.
I was given a quick hint to look at window.getexternal so that window.external does not error with a null object error. BUT now I am getting a null object on window.getexternal. AAAArrrrggghhh. So can anyone tell me where I'm screwing up???? Here are my code pieces:
my html test:
<br />
<HTML><br />
<HEAD><br />
<Title> Test of hooking into IDocHostUIHandler </Title><br />
<script language="JavaScript" id="clientEventHandlersJS"><br />
<!--<br />
function callHostUI(sectionName)<br />
{<br />
window.getexternal.ClickEventHandler();<br />
window.external.ClickEventHandler(sectionName);<br />
}<br />
--><br />
</script><br />
</HEAD><br />
<body><br />
<INPUT id="btnExit" onclick='callHostUI("The test finally worked")' style="Z-INDEX: 102; LEFT: 15px; <br />
WIDTH: 108px; COLOR: white; BORDER-TOP-STYLE: none; FONT-STYLE: normal; <br />
FONT-FAMILY: 'Book Antiqua'; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: <br />
none; POSITION: absolute; TOP: 227px; HEIGHT: 40px; BACKGROUND-COLOR: navy; <br />
BORDER-BOTTOM-STYLE: none" type="button" value="Test GetExternal"><br />
</body><br />
</HTML><br />
my interface implementation:
<br />
interface IPageClickHandler<br />
{<br />
void ClickEventHandler(string SectionName);<br />
}<br />
<br />
namespace myProgramNamespace<br />
{<br />
public class pageEditor : System.Windows.Forms.Form, IPageClickHandler, IDocHostUIHandler<br />
my IDocHostUIHandler implementation:
<br />
InitializeComponent();<br />
holdPageName = pageName;<br />
object flags = 0;<br />
object targetFrame = String.Empty;<br />
object postData = String.Empty;<br />
object headers = String.Empty;<br />
this.showWebPage.Navigate("about:blank", ref flags, ref targetFrame, ref postData, ref headers);<br />
ICustomDoc cDoc = (ICustomDoc)this.showWebPage.Document;<br />
cDoc.SetUIHandler((IDocHostUIHandler)this);<br />
this.showWebPage.Navigate(@"D:\TestHTMLData\TestConversation.html", ref flags, ref targetFrame, ref postData, ref headers);<br />
and my getexternal implementation
<br />
void IDocHostUIHandler.GetExternal([MarshalAs(UnmanagedType.IDispatch)] out object ppDispatch)<br />
{<br />
ppDispatch= (IPageClickHandler)this;<br />
throw new COMException("", S_OK);<br />
}<br />
No matter what I try, I keep getting window.getexternal is a null object! If I try window.GetExternal I get an error that the method does not exist, so my method call must be somewhat correct. I've tried the call as
window.getexternal.mymethod()
and I tried it as
window.getexternal.myinterface()
both return a null object error.
So what the heck am I doing wrong????? I cannot figure it out!
Thanks for ANY help,
MJ
_____________________________________________
The world is a dangerous place. Not because of those that do evil, but because of those who look on and do nothing.
|
|
|
|
|
theRealCondor wrote:
window.getexternal.mymethod()
window.getexternal.myinterface()
...
I see nothing wrong in the fact it does not work. Indeed, window.getexternal does not even exist in the javascript object model. You've got to stick with window.external. If you intend to add callable methods, then they'll be called like this : window.external.mymethod(...)
theRealCondor wrote:
I know IDocHostUIHandler is properly hooked because I am stopping the context menues from displaying.
Not sure. You are passing something thanks to the .SetUIHandler(...) method call, but may be you are passing null, an abstract interface, a class which doesn't implement idispatch methods, or even a class with a wrong layout.
The IDocHostUIHandler technique using C# must be paid special attention. That's why, again, the reference article on Cp should be your starting point. Additionally, here[^] are useful entry points.
|
|
|
|
|
.S.Rod. wrote:
That's why, again, the reference article on Cp should be your starting point.
Well -- AGAIN I did start with all of the articles here on CP. I also followed several discussion threads. Nowhere on this site has anyone posted anything that does this in a full working discussion. All of the discussions go up to a point, a promise to post a sample project, then NOTHING. A dead discussion. And it was a post here on CP that said to look at doing GetExternal, and it was here that it looked like he was suggesting I do a window.getexternal.
I implemented IDocHostUIHandler following the article that was written by Nikhil Dabas and I deployee the MsHstHtmInterop.Dll component from his article. And, as shown in my code I included in my post, when I
<br />
throw new ComException("", S_False);<br />
I see the context menues. And when I
<br />
throw new ComException("", S_OK);<br />
I do not see the context menues.
Now having said that, executing JUST window.external produces these lustrous results:
'window.external' is null or not an object
I have also searched HUNDREDS of results form Google. Lots of talk about simple hooks and hundreds of posts about stopping the context menu. NOTHING is there about having javascript hit a method in my WinForm.
Now if you have any helpful comments that I can actually act on, I'd be greatful to hear them.
_____________________________________________
The world is a dangerous place. Not because of those that do evil, but because of those who look on and do nothing.
|
|
|
|
|
theRealCondor wrote:
I have also searched HUNDREDS of results form Google. Lots of talk about simple hooks and hundreds of posts about stopping the context menu. NOTHING is there about having javascript hit a method in my WinForm.
It's useless to search hundreds of posts if you don't know what you are looking for.
Here is how it works :
- anyone willing to implement custom menus or external method calls should register a custom site handler. That's what is done with the ICustomDoc.SetUIHandler(object) method call.
- the passed object reference has to implement the IDocHostUIHandler interface, an IUnknown based interface. Among the methods are one which is used as an entry point for all window.external.mymethod() calls, that's GetExternal(out object ppDispatch) .
- the GetExternal method should return a reference to an object which implements a dispatch interface. In case you don't know, a dispatch interface is a standard automation interface providing the ability to have methods called by their names, thanks to two helper methods : GetIdOfName() and Invoke() .
- the good news is that the .NET CLR provides helper attribute, namely [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)], which implements all the underlying plumbing. What's left to do is to declare and implement the actual methods.
- in the end, we have a sample html file, which reacts on clicks by calling javascript's window.external.MyMethod() . In order for this to work, the afore mentioned object must declare and implement the MyMethod() method.
Here is how to declare the IDispatch interface :
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyInterface
{
void MyMethod();
}
Here is how to implement it :
public class IMyInterfaceImpl : IMyInterface
{
public void MyMethod()
{
MessageBox.Show("my method");
}
}
Here is how to attach this interface to IDocHostUIHandler :
void IDocHostUIHandler.GetExternal(out object ppDispatch)
{
ppDispatch = new IMyInterfaceImpl();
}
Finally, here is a sample html code for a demo :
<html>
<body>
<script language="javascript">
function myclick()
{
window.external.MyMethod();
}
</script>
<p>Nothing in particular here.</p>
<a href="javascript:myclick()">click</a>
</body>
</html>
|
|
|
|
|
Thank you very much. With a clear description of what was going on, I got the implementation straightened out....and it works. So my implementation of IDocHostUIHandler seems to be fine -- it was just how I was told to implement the method to be executed.
You have ended a horrendous two-week hunt through a large number of articles and websites.
Thank you VERY much.
MJ
_____________________________________________
The world is a dangerous place. Not because of those that do evil, but because of those who look on and do nothing.
|
|
|
|
|