Click here to Skip to main content
15,891,253 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi
I have a ImageList from my UserControl in visual c++ 2012 cli in .net 4 and I added some images in my ImageList to the set buttons images, but when I run my project I get this error in the header file can any one tell me what is problem ?

An unhandled exception of type 'System.NullReferenceException' occurred in
Additional information: Object reference not set to an instance of an object.

my image list from header file initialize with this commands
C++
System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(SignalDisplayControl::typeid));
this->imageList1->ImageStream = (cli::safe_cast<System::Windows::Forms::ImageListStreamer^  >(resources->GetObject(L"imageList1.ImageStream")));
					this->imageList1->TransparentColor = System::Drawing::Color::Transparent;
					this->imageList1->Images->SetKeyName(0, L"Alarm_Acked.png");


Thank you guys ;-)
Posted
Comments
CHill60 15-Dec-13 13:44pm    
Is the line that throws the exception included in this code snippet?
Sergey Alexandrovich Kryukov 15-Dec-13 14:15pm    
In what line? Did you use the debugger?
—SA
Aydin Homay 15-Dec-13 14:21pm    
I get this exception in this line :
this->imageList1->ImageStream = (cli::safe_cast<system::windows::forms::imageliststreamer^>(resources->GetObject(L"imageList1.ImageStream")));
Sergey Alexandrovich Kryukov 15-Dec-13 15:08pm    
Probably GetObject returns null. In my answers, I explained what you should do. Please follow my instructions.
—SA
Member 11043556 28-Aug-14 14:02pm    
Thank you Sergey, ill give your Answer a shot! :D

You did not show where the exception with the message "Object reference not set to an instance of an object" is thrown.

Not to worry. This is one of the very easiest cases to detect and fix. It simply means that some member/variable of some reference type is dereferenced by using and of its instance (non-static) members, which requires this member/variable to be non-null, but in fact it appears to be null. Simply execute it under debugger, it will stop the execution where the exception is thrown. Put a break point on that line, restart the application and come to this point again. Evaluate all references involved in next line and see which one is null while it needs to be not null. After you figure this out, fix the code: either make sure the member/variable is properly initialized to a non-null reference, or check it for null and, in case of null, do something else.

Please see also: want to display next record on button click. but got an error in if condition of next record function "object reference not set to an instance of an object"[^].

Sometimes, you cannot do it under debugger, by one or another reason. One really nasty case is when the problem is only manifested if software is built when debug information is not available. In this case, you have to use the harder way. First, you need to make sure that you never block propagation of exceptions by handling them silently (this is a crime of developers against themselves, yet very usual). The you need to catch absolutely all exceptions on the very top stack frame of each thread. You can do it if you handle the exceptions of the type System.Exception. In the handler, you need to log all the exception information, especially the System.Exception.StackTrace:
http://msdn.microsoft.com/en-us/library/system.exception.aspx[^],
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx[^].

The stack trace is just a string showing the full path of exception propagation from the throw statement to the handler. By reading it, you can always find ends. For logging, it's the best (in most cases) to use the class System.Diagnostics.EventLog:
http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx[^].

Good luck,
—SA
 
Share this answer
 
v2
Comments
Aydin Homay 16-Dec-13 0:14am    
Dear Sergy it is not answer of my question !!!!
Sergey Alexandrovich Kryukov 16-Dec-13 0:45am    
Of course it's not your answer, it's my answer. :-)
I tell you: use my instructions and you will be fine.
—SA
Aydin Homay 16-Dec-13 1:50am    
Like ;-) Sergy these codes are in header file I did not write it. these codes are generated by visual studio from header file.
Sergey Alexandrovich Kryukov 28-Aug-14 14:10pm    
If does not make much difference. If you catch exceptions up the stack, it will show you how it propagates, no matter to the library calls or not. Are you sure you got the idea?
If the exception is thrown in a library code (without source code), it will still show you where the problem is. Most usually, it just means that you called correct method/property with incorrect parameters. Following the simple techniques I explained, you can easily get to the root of the problem. I mean it: this is one of the very easiest cases to detect and fix. But if you did not master those very basic and simple techniques, nothing can help you.
—SA
dont do anything just learn try catch block and see what happen in it?
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900