2009-07-21 8 views
18

Po otwarciu formularza w Visual Studio 2005 (C#) projektant automatycznie zmienia rozmiar formularza i przenosi/zmienia rozmiar kontrolek bez dotykania projektanta. Plik źródłowy zostanie zmieniony i kiedy zamknę projektanta, zostanie wyświetlony monit o zapisanie pliku * .cs. Próbowałem zajrzeć do opcji studia wizualnego bez żadnego sukcesu. jakieś pomysły? konfiguracja wizualna studio czy coś? dziękuję, TalVisual Studio 2005 Projektant przenosi elementy sterujące i zmienia rozmiar Formularz

Odpowiedz

3

Znalazłem pracę.

nie jestem pewien, co się dzieje, ale zmieniłem moje właściwości wyświetlania. i działa dobrze. tutaj jest sekwencja: wyświetl propertis-> zakładka ustawień-> z góry. w górnym oknie dialogowym zmieniłem "Ustawienia DPI" z Dużego (120dpi) na Normalny (96 dpi).

+3

to okropne, że na projektanta IDE wpływa twój DPI ekranu . Przykro mi to słyszeć. :( –

+2

Z wielu horrorów utrwalonych przez Windows, "ustawienia DPI" jest jednym z najgorszych.To ustawienie powoduje więcej problemów z większą liczbą aplikacji niż prawie wszystko, co widziałem. – Stewbob

1

Z tym należy mieszkać. Nawet w VS2008 takie rzeczy zdarzają się od czasu do czasu. Zależy to głównie od zawartości formularza (formanty, pozycje itd.) I nie ma opcji w VS do wyłączenia takiego zachowania.

Po otwarciu formularza w projektancie kontra Środowisko wykonawcze przebudowuje wygląd z kodu źródłowego. Czasami w tym momencie dokonywał zmian. Również, gdy po prostu dodajesz jedną formant do postaci, projektant w pełni przebudowuje plik kodu źródłowego i pliki zasobów. Jest to znany problem i wydaje się, że MS nie naprawi go, ponieważ poruszają się w kierunku WPF.

Więc kilka punktów, aby uprościć swoje życie:

  1. Przejście do VS2008, projektant były bardziej spójne, ale nadal losowe kontrole .designer.cs złożyć
  2. Umieść swój kod w jednym z repozytoriów źródłowych, więc jeśli przypadkowo zapisałeś taki formularz, możesz go przywrócić z repozytorium.
+0

dzięki arbiter. -Właśnie w roku 2008 nie ma znaczenia dla mojego projektu (w tym momencie jest za dużo kodu). – tal

+0

VS2005-> Migracja w 2008 roku wcale nie jest problematyczna. –

+5

To nadal jest problem w VS2010 – ryantm

10

Pracowałem nad tym problemem przez większość dnia i znalazłem kilka interesujących rzeczy: Głównym źródłem problem wydaje się polegać na kotwiczeniu. Jeśli użyję dokowania do ustawienia kontrolek, zamiast zakotwiczać, moje problemy znikają. Znalazłem kilka wpisów na blogu z 2003 (!), Które szczegółowo opisują, jak można użyć dokowania zamiast zakotwiczania i wyjaśnić, w jaki sposób zakotwiczenie może złamać projektanta formularzy systemu Windows. Wygląda na to, że ten problem może mieć ponad 7 lat!

Oto posty:

+1

Kontrole w mojej formie były konsekwentnie wypaczane przez projektanta - problem nadal występuje w VS 2012. Wygląda na to, że przejście do dokowania go zatrzymało. – pettys

+2

Ugh, nadal problem w VS2013, dzięki za to naprawdę pomogło. – heisenberg

7

Wynika to AutoScaleMode -property. Twoje formularze zostały prawdopodobnie zaprojektowane z różnymi ustawieniami DPI lub Czcionka niż w ustawieniach ekranu systemu Windows. AutoScaleMode -property ma 4 różne możliwe wartości: Dpi, Font, Inherit lub None. W trybie Dpi lub Font Twoje formularze i formanty będą automatycznie zmieniane w zależności od ustawień wyświetlania okien.

Tak więc, ustaw wartość -property na None we wszystkich formularzach i formantach i nie będą one już automatycznie zmieniane. Spróbuj zaprojektować swoje formularze, aby zapewnić wystarczającą ilość miejsca w każdym sterowaniu, aby tekst się zmieścił, nawet jeśli rozmiar tekstu jest ustawiony na 125%.

+0

Wydaje się, że zrobiłem to za mnie. Musiałem edytować plik * Form.Designer.cs, aby to zmienić. AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; i usuń to.AutoScaleDimensions = new System.Drawing.SizeF (6F, 13F); (obie linie są razem w pliku .Designer.cs) – Jimmy

0

Ustawienie dla mnie minimalnych i maksymalnych ustawień rozmiaru do bieżącego rozmiaru. Zapobiegło to zmianie rozmiaru VS.

2

Miał ten sam problem z kontrolkami zakotwiczonymi na górze, w lewo i prawo w obrębie skomplikowanych TabControls. Projektant formularzy wizualnych zwiększał szerokość wszystkich zagnieżdżonych kontrolek za każdym razem, gdy otwierałem formularz.

Znalazłem proste obejście dzięki this post. Po prostu dodałem panel do każdej karty i ustawiłem ich właściwości doków do wypełnienia. Wszystkie istniejące kontrole w zakładkach zostały przeniesione wewnątrz tych paneli. Działa to, nawet jeśli elementy sterujące są zakotwiczone na górze, na lewo i na prawo.

Works przynajmniej dla Visual Studio 2013 i 2015.

-2

miałem ten problem, zbyt. Za każdym razem, gdy otwierałem projektanta, każde pudełko z kotwicą "prawo" zostało przesunięte o około 20 pikseli w lewo. Dodatkowo, na dole każdego pudełka z kotwicą "w lewo" znajdowało się około 200 pikseli poza formularzem.

Ten formularz ma wiele elementów sterujących i nie powinien się zmniejszać na mniejszych wyświetlaczach, więc został ustawiony na autoprzewijanie, sam formularz był mniejszy w projektancie niż przedstawiony minimalny rozmiar (historycznie ...). Po prostu ustawiłem rozmiar na minimalny, tak aby w projektancie nie pojawiły się paski przewijania, a kotwice działały zgodnie z oczekiwaniami, nie psując pozycji.

Przeczytałem pierwszy wpis z odpowiedzi Ryantma, która doprowadziła mnie do rozwiązania. Najwyraźniej ma to coś wspólnego z zamówieniem .Net wykonuje zdarzenia takie jak ustawienie rozmiaru formularza.

0

Miałem trywialny formularz z kilkoma kontrolkami na nim, gdzie OK i Anuluj na dole były przesuwane, gdy tylko formularz został otwarty w projektancie VS2013. To samo zachowanie zaobserwowano w VS2015.

Zaakceptowana tutaj odpowiedź DPI nie rozwiązała problemu dla mnie, ani nie było żadnych problemów dotyczących rozmiaru/dopełnienia/marginesów.

Usuwanie elementów sterujących, które są przesunięte i dodając je z powrotem do postaci rozwiązał problem dla mnie, jak sugeruje ptutt tutaj: Visual Studio designer moving controls and adding grid columns when form is opened

Choć doceniam sugestię ryantum i linki za pomocą dokowania [panele] jak również wspomniałem w linku powyżej z postem na blogu Rolanda tutaj https://weblogs.asp.net/rweigelt/28984, z czymś tak trywialnym, że wolałbym po prostu odejść z usuwaniem/dodawaniem z powrotem.

0

Znalazłem blokowanie formantów z menu formatu było proste i skuteczne rozwiązanie. VS2013

-1

Miałem ten problem z VS 2015. Użyłem paneli dokowania z kontrolkami, które nieoczekiwanie poruszyły się jako ich potomkowie. Domyślnie elementy sterujące zostaną wyrównane w lewo, ale można zmienić orientację. Moje przyciski przestały się poruszać.

Powiązane problemy