After several days of happily hacking away on this C# app using Visual Studio 2008, I get struck by a barrage of error dialogs showing:
Code generation for property 'valueMember' failed.
Error was: 'Object reference not set to an instance of an object.'
This happens now often when I make a tiny change in the designer, e.g. shift a control a few pixels, and then try to save. Several such error dialogs appear each second, keeping me busy cancelling all those by hammering the Enter key while trying to get alt-F4 to get VS to close.
Eventually I do get VS to close and to save the changes I made. After restarting VS, I do "clean" on the entire project, then "build" and everything works fine, the app runs fine, no problems.
Until I make another slight change in the form designer.
I don't know about any property valueMember in my app.
This makes me crazy, it is a real showstopper for my project. Any help is appreciated.
Try to Close and reopen the Visual Studio. maybe it seem silly, but it works!!
You can debug the designer using another visual studio and attach to process. If you got exception it should be easy to find it that way.
In general when openning the designer the constructor and of course initializeComponent is running.
As this is happening at design time, it is likely that you have a custom control which requires a parameter or other value which does not have a default.
When in design view in Visual Studio; a control instance is created to render it on the visual editor, but if the control requires a property to be set before it can be rendered, it will result in an error.
Can you check that all custom controls have default values, and anything referenced in the constructor that cannot have a default is wrapped by DesignMode property - see http://msdn.microsoft.com/en-us/library/system.componentmodel.component.designmode.aspx.
Similiar to #Chanipoz's answer (close/re-open) my component-rich/user-controls-everywhere forms app started to compile happily after I closed down the main form designer window.
I've had this code stack for years and have never seen the error until today. Not sure where it's coming from. But, something today about having the form open in the designer made everything unhappy. Simply closing it off of the screen made it all go smooth.
Use another instance of Visual Studio to attach to the first instance of visual studio.
Go to Debug-> Attach To Process and look for the devenv.exe process. Since you'll have two devenv.exe processes running you'll probably want to pick the one with the lower ID, that's usually the first instance of visual studio that was run.
I had to face this problem. As I have found the solution below
I am facing this issue in my customized control.
we need to implement like this
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public MyCustomclass _Prperty { get; set; }
I had to face this problem. As I have not found the solution (much inheritance), I can tell:
.SuspendLayout() and .ResumeLayout() may be missing in code or one of them. The same is with .BeginInit() and .EndInit(). It is expected between them, that there will be = new ... and some settings for properties. Maybe someone facing this problem would find the solution with this information.
The problem is missing initialization code for a public property on the control. This will be added for you when you add the control to the designer, but if you replace a control with a derived control, or update the component, then the designer does not know how to deal with this.
If you have a control (wincontrol) with a public property PropertyA, and you add it to a form (myForm), then the designer will add all the necessary initialization for properties into myForm.Designer.cs. Something like;
Wincontrol1.PropertyA = new List<widget>();
It is not uncommon to need to modify a control slightly, lets say we have a new control MyWinControl
public partial class MyWinControl : WinControl
{
public List<wodget> PropertyDer1;
protected List<wodget> PropertyDer2;
}
If you sub this new control for the old control in myForm.Designer.cs, then you may well encounter this issue. The reason is that PropertyDer1 has no initialization in the winforms designer. PropertyDer2 won't cause any issues because it is protected. Similarly if you had a custom component and you add a new public property after the component has been added to a form.
If however, you deleted the instance of WinControl on the form, and dragged an instance of the MyWinControl onto the form instead, the proper initialization would occur and you would not see the error. The designer will have created the new control like this
Wincontrol1.PropertyA = new List<widget>();
Wincontrol1.PropertyDer1= new List<wodget>();
There are two easy solutions that do not require hiding the property from the designer.
1. If the property doesn't need to be public, give it the right modifier
2. If the property does need to be public, then just edit the code in the myForm.Designer.cs as in the code above to add the missing initializer
If could be of help I just detected a case that brings that same error message, impossible to take away :
I am developing an application in French, and I had to create a ToolStripMenuItem with an accented word in it like "annulées".
The system generated a menu item like "annuléesToolStripMenuItem" and the accent is the culprit.
Enough to delete the item, create it again in English and the just change the Text property of the menu item.
Hope it will be of some help.
Related
I have one project with my forms, etc. and one DLL-Project with UserControls and extended Controls, all with .Net4.5.1 and WinForms. A few weeks ago I did a migration from VS-Net2013 but the custom controls I'm talking about did not exist at that time. With every edit in my form inside Designer the new Form.Designer.cs is missing the instantiation of my custom gridview. All other parts regarding this control are still in the designer-code.
public class RichGridView : DataGridView { ... }
The missing part in Form.Designer.cs is:
this.dataDGV = new RichGridView(Definitions.DataType);
I can put this line back for myself into the designer-code but that's not how it should be. I was checking whether there are other files where VS might store information about the controls handled in its designer file but didn't found something. A while ago the designer has thrown away that line only a couple of times, so I could edit my form in the designer-window without problems and very seldom the instantiation was thrown away, now with every edit.
The other Project containing the DLL with my custom controls was compiled successfully and available for my Forms-Project, furthermore there was no change at all in the other project. If the point is that the custom control is outside the Forms-Project: I had to do this due to constraints in VS when dealing with UserControls regarding 32 vs 64 bit and debugging possibilities.
Not sure if there is some part of my code necessary for this question.
I wish I could understand how the loading of xaml files into rehosted designer works. Depends of xaml definition I get different results.
Xaml, root node in the file is Activity that cointans flowchart. Here it's enough using desinger.Load(xamlFileName) with (new DesignerMetadata).Register() after creating the designer (anyone know what kind of magic is that?) In the designer I get workflow that looks like in visual studio editor.
Xaml, root node is Flowchart itself. The same steps give me only one, bare activity in the designer. I tried wrapping workflow in activity builder according to this(I have a similar problem). There are no problems with assemblies(at least I think so), no exceptions. I can't make it work like in previous point.
Is there any difference between xaml saved in visual studio and xaml saved in rehosted designer?
ActivityXamlServices.Load sometimes returns DynamicActivity, sometimes the target workflow. What does it depend on?
Thank you for any support.
Turns out that it depends on the argument given to the rehosted designer. If I start with new Flowchart, the root node in xaml will be flowchart. When loading such file later to the designer you dont need to wrap it. If you started with ActivityBuilder you might need to use WorkflowInspectionServices to get the workflow before loading xaml.
Sometimes to show workflow properly in the designer you need to use (new DesignerMetadata).Register() from proper assembly, but its not always necessary, I'm not sure what does it depend on.
I've currently got custom control that has somehow lost its parent and is now not parented to anything but it's still in the list of controls in the form designer. The delete button also doesn't work and is thus disabled. This happens every now and again and its a pain to go through the designer code and remove manually, plus there are other developers that this will annoy and may confuse them.
I'm therefore trying to add a Verb within the controls ComponentDesigner to delete itself from the form. But I realised that because its not 'childed' to anything, it therefore cant be removed as a child. How would I therefore go about deleting a control from the form designer via code?
This can happen when one of your controls throws an exception at design time. That's rarely a silent event, the designer shows a popup message box. Not getting a message box may happen when you swallow exceptions in your code with a try/catch.
Trying to fix this by hacking a designer just adds to the problem. Fix it by editing the designer code, it is okay when you know what you're doing. If you can't find the reason then get it to a point where you can make it somewhat reproducible. Then start another instance of Visual Studio, Tools + Attach to Process and select the first instance. Debug + Exceptions, tick the Thrown box for CLR exceptions so the debugger will stop when the exception is thrown.
Back up the file.
Open up the designer file; e.g., Form1.Designer.cs
Expand this region: Windows Form Designer generated code
You should be able to find your control in the code and delete it. Be careful.
I solved the issue by finding the loose controls within the Document Outline tab. This way is super easy and is graphical.
I am attempting to create a CustomControl in C# which contains a Delphi TFrame, which can be dragged from the VisualStudio toolbox onto a Form. This much I have working correctly, however when I attempt to resize the control errors occur due to the TFrame not running in design mode (it attempts to access the event handlers for a data grid on the frame).
I have created a TFrame object in Delphi which contains various controls (data grid, combobox etc), and a CustomControl in C# which contains the TFrame object.
To get around this problem I think I need to set the Site property of the TFrame object, so that DesignMode is true. How can I go about doing this?
I know I can get around this problem by checking at the start of each method if the LicenseManager.UsageMode is set to DesignTime, but this seems a very bad way of solving the problem. So if possible I would like to get the site property set correctly.
I am using CodeGear RAD Studio 2007 and Visual Studio 2008.
Thanks in advance
Turns out this problem is caused by a bug within Visual Studio where the DesignMode and Site property never gets set on components created within a constructor or a UserControl. Therefore the DesignMode property is always false.
There are several proposed solutions all of them involve adding a test to any event handlers or methods where code should only be executed at runtime. The first option is to check the LicenseManager.UsageMode property, and the second option is to check the name of the executing process (e.g. if its "devenv" then its design time).
I have a winform usercontrol with several items (textboxes, buttons,...). Now I am confronted with phenomenon, that all items are suddenly away (in the VS 2010 designer view / document outline), although in the control designer file (designer.cs) the textboxes, buttons,... are still defined. There is also no compilation error. When I run the application, the items are still missing! I have already restarted VS!
Does anybody know, what the reason for this is?
In the InitializeComponent method do all the controls get added to the form via this.Controls.Add... statements?
I know this happened with VS2003 a lot that these code lines would disappear. I suspect that this is the problem
Did you possibly remove the call to InitializeComponent from your control's constructor by accident?
Does the name of the partial class in your .designer.cs file match that of your "main" control file?
Try running your application through VS's debugger. Put a breakpoint at InitializeComponent and step through all the code responsible for creating and placing all the controls in your user control. Maybe you will happen upon an explanation this way.
Try to restart your Visual Studio, and the do a Rebuild Solution.