|
No, you don't need "new". You need "override". The "new" keyword is for member *hiding*, not overriding.
To understand why, you need to know about the difference between virtual and non-virtual members, also often described as "late-bound" and "early-bound" members. It's also helpful to understand the concepts of reference types and value types.
A couple resources I dug up for you quickly (you may want to google for others if they don't work for you):
Value Types vs Reference Types[^]
Virtual Members vs Non-Virtual[^]
Or google "polymorphism" and these other terms I've mentioned.
In brief, virtual members work as follows: When a member is accessed, such as method Foo(), the implementation of that method is resolved ("bound") at run-time, based on the run-time (actual) type of the object. For non-virtual members, the implementation is resolved at compile time (when you compile), based on the declared type of the reference.
For example:
public class A
{
virtual public string Foo() { return "A.Foo()"; }
}
public class B : A
{
override public string Foo() { return "B.Foo()"; }
}
void test()
{
A obj = new A();
MessageBox.Show(obj.Foo()); // "A.Foo()"
obj = new B();
// Now, "obj" is still of declared type "A", but run-time type "B".
MessageBox.Show(obj.Foo()); // "B.Foo()"
}
If instead you declared A.Foo without the virtual keyword and used new to hide this method in B, the second call to "obj.Foo" would still resolve to A.Foo, because obj is of declared type A.
|
|
|
|
|
Thanks for your reply but it wouldn't work for me earlier. Probably to much going on.
Just tried and it is working. Thanks again for you help.
The FoZ
|
|
|
|
|
Hi,
I have created a winform using c# in visual studios 2008 professional. I am trying to deploy the application on a different pc, other than the one it was developed in, am getting the following error.
"Unable to run or install the application. The application requires that assembly Microsoft.Office.Tools.Excel Version 8.0.0.0 be installed in the Global assembly cache GAC first."
Can any1 help me solve this issue. Thanks
|
|
|
|
|
Gee, have you considered installing the dll it's asking for ?
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
How much more clear could the message be?!?
Hold on, with my psychic powers I can determine that your application has some functionality that relates to Microsoft Excel. Am I right?
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
But from where do i downmoad it from, i tried updating office with sp3. has not solved the problem yet.
Could any one provide a link to the download,..
Thanks
|
|
|
|
|
I tried looked for dll files for office before and could not find. you need full version and maybe you can copy them from there.
I believe the version you want (8.0.0.0) is excel '98 so you need to get a copy of that and use those files. If you did not want to use such an early version then you need to specify the version in your code. But you will still need the appropriate files on your target machines.
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
hi guys,
i am trying to get the text from the checked checkbox in my checkedlistbox ..
i write this code this.textBox1.Text = this.checkedListBox1.CheckedItems.ToString(); but i don't get it...
it retutns this
System.Windows.Forms.CheckedListBox+CheckedItemCollection
i would appreciate if someone help me..
thanks in advance...
|
|
|
|
|
Checked Items is a collection, as you can see. You need to use foreach to step over this collection, and get the names of all the checked items.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
You mean you want to see Check
foreach (string checkedval in this.checkedListBox1.CheckedItems)
{
}
|
|
|
|
|
Hi there.
I'm trying to write a c# code that will automaticaly initiate a user login, if the user is logged off for a given period of time.
I've tried using the ADVAPI32.DLL's function LogonUser, but apparently that is used for impresonation (am i wrong?).
So, how is that done?
In addition, i failed to find a way to check if a specific user is logged on or not.
Any idea?
Thanks,
SummerBulb
|
|
|
|
|
Although I believe you can write C# code in a service that will run when a user is logged off, I doubt you can log on through such code.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
How are you planning to run your code while there is no user logged in? Do you not think this defeats the purpose of having a login?
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
The code will run as a service.
I've already managed to run a c# application as a service.
That's the easy part.
Although, is should be takan into consideration that in order to run a c# app in th logon window, is has to run under SYSTEM.
That might make things more complicated.
|
|
|
|
|
|
Hi,
i have a form with 3 combobox which is bind to datatable
i use combobox.datasoure to bind to datatable
And on 1st combobox selectedvalue i need to send the cbo text to database and get another set of datas and populate 2nd cbo with datatable
So for this, if i use selectedindexchanged event it is fired so many times...
this event is fired when i bind the combobox to datatable using
combobox.datasource = datatable;
so after googling i use selection change committed event
this event is fired after user selection and before combobox dropdown closed....
and this event doesnt fire on datatable bind.
But my problem now is, in selectionChangeCommitted event, the combobox selectedvalue is currently selected value and the combobox.text is previously selected text , so i cudnt pass the combobox selected text to database to retreive the datatable...
cud anyone plz help me to resolve this issue?
thank u
|
|
|
|
|
Are they all bound to the same table, or to copies of it ? If they bind to the same table, they will keep in synch with each other.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
No they are not bind to the same datatable...
depending on 1st combobox's text, i need to fetch different set of data from database and populate 2nd combobox
|
|
|
|
|
I'd set up the datasource, THEN write the code to bind to the event that you want to bind to.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Hi,
thanks for ur reply.
I know how to bind the datatable to combobox datasource.
But the thing is, on selectionChangeCommitted event, the selectedvalue gives currently selected value, bu t the combobox text is previously selected value...
i want to get the currently selected text...
|
|
|
|
|
You said that using the selectedindexchanged event worked, but it fired a lot as it binds. I am saying, use that, and connect it AFTER binding.
Also, go into the debugger, and check if SelectedText or just Text is the right property to get the new value.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Can u plz be more acurate in "connect it after binding"...
i really cudnt get wat u mean.....
i have written the below statement in form load...and this is the first combobox... depending on this value i need to get datatable for 2nd combobox.. But as soon as i bind it fires indexchanged event.
combobox1.DataSource = dtSubclass1;
after this statement, selectedindexchanged event is fired.... but i dont want it to be fired..
|
|
|
|
|
vidhyaravichandar wrote: after this statement, selectedindexchanged event is fired.... but i dont want it to be fired..
Well, it's really simple. Don't hook up the event until after you set the data source. As I said.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Hey.
I am having a application that uses a IE webbrowser control.
I know how to set a proxy overall for IE, but is there some way I can use a different proxy from each application with the webbrowser, that I have open ?
Or is there are smarter webbrowser control that can handle more proxies than just one?
|
|
|
|
|
Have the strangest problem, the NotifyIcon component will not "popup" its notifications under Windows 7. I even went into notification settings and explicitly told windows to always show all the icons and notifications, still nothing.
To make sure I wasn't going insane I copied the program to a Windows XP box and the notification icon worked as expected.
No to be defeated, I loaded up the registry on the windows 7 box, found the notification key "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\EnableBalloonTips" changed the value from 0 to 1 and still nothing.
Has anyone else seen this problem.
Matthew Hazlett
Fighting the good fight for web usability.
|
|
|
|