visual studio 2005 designer moves controls and res

2019-01-06 19:42发布

When i open a form in visual studio 2005 (c#) the designer automaticaly resize the form and move/resize controls without touching the designer at all. The source file is changed and when i close the designer i'm asked to save the *.cs file. I tried to look into visual studio options without any success. any ideas? visual studio setup or something? thanks, Tal

10条回答
Root(大扎)
2楼-- · 2019-01-06 20:07

This is one you should live with. Even in VS2008 such things happen from time to time. It is mostly depends on form content (controls, positions, etc), and there is no option in VS to disable such behavior.

When you open your form in designer, vs runtime rebuilds visual appearance from code behind. And sometimes it made changes at this moment. Also when you are simply adding one control to form, designer fully rebuilds codebehind and resource files. This is well known issue, and seems that MS won't fix it, because they move in WPF direction.

So several points to simplify your life:

  1. Move to VS2008, designer were more consistent, but still shuffle controls in .designer.cs file
  2. Place your code in one of the source repositories, so if you accidentally saved such form, you can restore it from repositary.
查看更多
仙女界的扛把子
3楼-- · 2019-01-06 20:11

Had the same problem with controls anchored top, left and right within complex TabControls. The visual studio forms designer was increasing the width of all nested controls each time I would open the form.

I found a simple workaround thanks to this post. I simply added a panel to each tab and set their dock property to fill. All existing controls within the tabs were moved inside those panels. This works, even if the controls are anchored top, left and right.

Works at least for Visual Studio 2013 and 2015.

查看更多
手持菜刀,她持情操
4楼-- · 2019-01-06 20:12

I had this issue, too. Every time I opened the designer, every box with anchor "right" was moved about 20 Pixels to the left. Additionally, the bottom of every box with anchor "left" was about 200 pixels outside the form.

This form has many controls and should not shrink on smaller displays, so it was set to autoscroll, the form itself was smaller in the designer than the shown minimum size (historically...). I just set the size to the minimum size so that no scroll bars appeared in the designer and the anchors worked as expected without screwing up the postitions.

I read the first post from ryantm's answer which led me to the solution. Apparently it has something to do with the order .Net executes events such as setting the size of a form.

查看更多
我想做一个坏孩纸
5楼-- · 2019-01-06 20:13

I have been working on this problem for most of today and found some interesting things: The main source of the problem seems to be relying on anchoring. If I use docking to position my controls, instead of anchoring, my problems seem to go away. I found a couple of blog posts from 2003(!), which detail how you might use docking instead of anchoring, and explain how anchoring can break the Windows Forms designer. It seems like this problem might be over 7 years old!

Here are the posts:

查看更多
我想做一个坏孩纸
6楼-- · 2019-01-06 20:13

I found locking the controls from the format menu was a simple and effective solution. VS2013

查看更多
Juvenile、少年°
7楼-- · 2019-01-06 20:13

I had this problem with VS 2015. I used dock panels with the controls that moved unexpectedly as their childs. By default the controls will be aligned to the left, but you can change the orientation. My buttons stopped moving.

查看更多
登录 后发表回答