|
Nevermind, I figured it out!
|
|
|
|
|
The RichTextBox in .net doesn't do what I need- It doesn't let me disable AutoWordSelection (the API is broken), I can't change the default tab space size, I don't think I can rig it to do a line number gutter, and I don't think I can rig it to do syntax highlighting without distrupting the user typing.
That means I have to write a textbox from scratch. That will be a bigger job than the entire rest of my project.
Does anyone know of any tutorials and such about writing a custom textbox in C#/.net?
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
Well.
There are lots of sysntax highlighting tuts here and at www.codeguru.com[^] but I think they're all in C++. The actual highlighting isn't that big a deal. I've done it in VB with the normal VB rich text box for an SQL editor and that worked great.
As for the gutter, how about a richtextbox in a usercontrol. Size the control so it leaves the correct gap at the left side and draw your own line numbers there. You can get the size of the text and the number of lines down through the text the RTB is displaying etc etc etc, so that isn't that hard.
As for AutoWordSelection, uuummm, see what you mean.
Pete
Insert Sig. Here!
|
|
|
|
|
When you did syntax highlighting, were you able to do it while the user is typing? It seems like I have to select everything I want to change the color of, which would screw up typing...
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
Bog wrote:
were you able to do it while the user is typing
Yup. Just disable drawing to the window so none of the results of your selection code is drawn while you're doing it. Then store the actual selection (which will probably just be the current caret location) then run your highlightiong code, changing the selection etc etc etc. Then resore the selection/caret etc and Re-enable drawing to the rich text window.
I handled a couple of cases
1) if the user is just typeing, only highlight the current line. This makes the hightlighting quick.
2) When the RTB gets pasted to, highlight the newly added parts or the whole document.
Have a look at the C++ examples to get a better idea of the process. Failing that, just have a go at it and see how it works.
Pete
Insert Sig. Here!
|
|
|
|
|
i wonder if its based on the real richtextbox - if it is you could just send it the messages to enable/disable the other features...
"When the only tool you have is a hammer, a sore thumb you will have."
|
|
|
|
|
The RichTextBox class constructor is not marked internal, so you can derive it.
I would suggest you download a free tool like Anakrino[^] to decompile the IL code to C#, as a help to override the methods.
How low can you go ? (MS rant)
|
|
|
|
|
Hi All,
Probably a stupid qustion but...
I've got an object that I'm displaying to the end user via a PropertyGrid control. One of the properties is a Password. I'd like to display this item as "*****" rather than visible text.
Is there anyway of doing this ?
Cheers .. Andy
|
|
|
|
|
You have to write a custom UI type editor[^]. (there is a sample).
How low can you go ? (MS rant)
|
|
|
|
|
Thanks for the info ... but the link doesn't work for me...
|
|
|
|
|
Well i've managed to find the info and i've tried it out.
The examples i can find give me the ability to render a UI component as a drop down or modal control. I've played with this and have been able to get a TextBox with a password mask just fine.
BUT ... the data in the PropertyGrid is still clear text ! Which is not what i want... this is the text that must be hidden.
Ideas anyone ?
|
|
|
|
|
I think you need a type convertor , not a UItype editor. Also the password have to be a class of its own (perhaps, maybe not) and not just a string.
Hope this helps
"There are no stupid question's, just stupid people."
|
|
|
|
|
Well, in the normal way, the property can be edited in a textbox, right?
So, we can change its default UITypeEditor to a TextBox which PasswordChar is * or any char you like, by setting some attributes like EditorAttribute on the property you have.
Hope helps to you.
I'm amumu, and you?
|
|
|
|
|
Hello Everybody,
I am trying to import data from Excel sheets through my application.But its not reding the first row of Excel sheet.
Somebody suggested me to set "HDR=No" property in my connection string.
So now my connection string looks as follows,
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source="+fullPath+";" +
"Extended Properties=Excel 8.0;HDR=No;";
but its giving me following exception
"System.Data.OleDb.OleDbException : Could not find
installable ISAM
at System.Data.OleDb.OleDbConnection.ProcessResults(Int32
hr)
at System.Data.OleDb.OleDbConnection.InitializeProvider()
at System.Data.OleDb.OleDbConnection.Open()
........"
To overcome this error i tried doing following things
I went to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
location in my windows registery and found following things,
Name Type Data
win32 REG_SZ c:\WINDOWS\System32\msexcl40.dll
then I checked if this "msexcl40.dll" really exist at the path c:\WINDOWS\System32
and it was present there.
Then i uninstalled office2000 from my machine and installed OfficeXP.
Still i am getting the same exception.
Can anybody help me in finding out where i am going wrong or what could be the problem?
Thanks in advance,
Regards,
Saroj
Saroj
|
|
|
|
|
There can be many reasons. Reinstalling Office may not be enough, especially when you know that what you are actually using here is the MDAC run-time which is separately available.
I would suggest to install MDAC 2.7[^]
Other than that, msexcl40.dll has two MDAC child dll dependencies : msjet40.dll, mswstr10.dll
How low can you go ? (MS rant)
|
|
|
|
|
Where can i download the visual soucesafe 6.0c?Thanks.
|
|
|
|
|
i think it only comes with Visual Studio.NET Enterprise Edition, it is the piece that does all the integration work between VS.NET and the VSS database
Soliant | email
"The 'B' in Visual Basic means Beginner" - R. Bischoff
|
|
|
|
|
Someone please tell me if this is supposed to work:
(because it compiles and all I'm getting is a runtime invalid cast exception)
Object obj = someAssembly.CreateInstance("MyClass");
MyAbstractClass x = (MyAbstractClass) obj;
x.doCoolStuff();
More importantly, I don't want to use Invoke() calls. Isn't there a cleaner work-around?
Bilal
|
|
|
|
|
What's the definition of MyClass and MyAbstractClass?
Also, have you tried this without using CreateInstance to see if that works?
Cheers,
Simon
"VB.NET ... the STD of choice", Me, interal company memo
|
|
|
|
|
MyClass is derived from MyAbstractClass (sorry, should have mentioned that) and implements parent's abstract functions.
What alternatives are there for creating objects at runtime from definitions available only in other .NET DLLs or EXEs?
I'm just a .NET newbie
Bilal
|
|
|
|
|
You might want to look at the Activator class.
Note that if you want to cast to an abstract class you own, the class will have to refer to the same abstract class (ie same assembly and same version)
|
|
|
|
|
As Eric allueded to, you've got to watch out when using objects from other assemblies. Unless you're using an interface or class type shared from the same .dll, you'll run into problems. In other words, the assembly creating the object and the assembly trying to downcast the object must both reference a separate assembly that describes the interface or class to which you are downcasting. (Does that make sense?)
John
|
|
|
|
|
It does and you two clinched it. Thanx guys!
Bilal
|
|
|
|
|
Can't imagine why this wouldn't work. Try this:
MyAbstractClass x = obj as MyAbstractClass; as is a lot more flexible than direct casting and if it can't cast then rather than throwing an exception it will set x to null , giving you some room to debug.
Paul
I think there're pieces of me you've never seen - Tori Amos, Tear in Your Hand
|
|
|
|
|
The following is more safer:
Object obj = someAssembly.CreateInstance("MyClass");<br />
if( obj is MyAbstractClass )<br />
{<br />
MyAbstractClass x = (MyAbstractClass) obj;
x.doCoolStuff();
}
and the precondition is you have added reference library, which has a definition of MyAbstractClass.
I'm amumu, and you?
|
|
|
|