2010-01-26 11 views
20

Powiel możliwe:
Is there an attribute I can add to a class so it will be edited as code, not in the designer?Czy można powiedzieć programowi Visual Studio, aby nie traktował pliku źródłowego jako "komponentu"?

Klasa z System.ComponentModel.Component na swojej drodze dziedziczenia są automatycznie traktowane jako "składniki" w ramach programu Visual Studio (2008), wywołując inną ikonę pliku źródłowego:

http://i48.tinypic.com/1z23wvn.png

Gdy ikona łania To naprawdę nie ma znaczenia, zmienione zachowanie z podwójnym kliknięciem jest naprawdę denerwujące: zamiast otwierania kodu źródłowego w edytorze tekstu, Visual Studio pokazuje teraz ekran zachęcający mnie do dodawania komponentów do mojej klasy poprzez przeciąganie ich "z Przybornika". Nie chcę tego robić!

Jestem świadomy, że mogę kliknąć prawym przyciskiem myszy plik źródłowy i wybrać "Wyświetl kod", ale gdy tylko zapomnę tego zrobić, utknąłem w oczekiwaniu na dialog, który jest absolutnie bezużyteczny. Czy istnieje sposób wyłączenia zachowania komponentu (najlepiej w kodzie źródłowym)?

+0

Jeśli utkniesz czeka na oknie, komputer jest zbyt powolny dla maszyny programistycznej :) To samo dzieje się, jeśli zdecydujesz się dodać częściowy plik klasy dla formularza lub kontrolki. Chociaż jest to w zasadzie oddzielny plik tylko do kodu, otworzy on projektanta (i jest, jeśli dobrze pamiętam, nie ten dla rzeczywistej formy). Irytujące, ale mam tendencję do klikania prawym przyciskiem myszy-> Wyświetl kod mimo to w plikach, które nie mają zwykłego symbolu kodu. – OregonGhost

+1

Heh, teraz czas na otwarcie okna dialogowego jest bardzo czasochłonny, ale w moim mózgu potrzeba kilku cykli zegara, aby dojść do wniosku, że coś poszło nie tak :) –

+1

Ponadto, omawiany projekt to * nie * winFormy, więc naprawdę uważam to za niesprawiedliwe, że VS mnie dręczy swoimi brzydkimi projektantami. –

Odpowiedz

40

Nie możesz użyć atrybutu DesignerCategory do dekoracji swojej klasy?

Podczas dekoracji klasy z tego atrybutu jak wyświetlane poniżej, plik należy otworzyć w „widoku kodu” Po dwukrotnym kliknięciu go:

[System.ComponentModel.DesignerCategory("Code")] 
public class MyComponent 
{ 
} 
+5

Dokładnie! To naprawdę dziwne, że masz * możliwość używania w pełni kwalifikowanej nazwy dla tego atrybutu, chociaż:) –

+2

Przyszli czytelnicy zauważają dokładnie komentarz @ JørnSchou-Rode.Wygląda na to, że działa to tylko wtedy, gdy używasz w pełni kwalifikowanej nazwy atrybutu. – Boinst

+0

Jak na ironię, Visual Studio pozwala ustawić różne atrybuty na różnych plikach częściowych opisujących tę samą klasę i działa odpowiednio, ale skompilowany uważa to za błąd. –

3

Jako że OregonGhost już wspomniano w swoim komentarzu, dzieje się tak również, jeśli zrobisz częściowy plik klasy z formularza.

Problem jest jeszcze gorszy. Jeśli spojrzeć do pliku projektu można znaleźć wpisy dla każdego pliku to tak:

<Compile Include="FormMain.cs"> 
    <SubType>Form</SubType> 
</Compile> 

więc rozwiązanie powinno być, aby usunąć linię <SubType>...</SubType> przyczyną wydaje się być źródłem wszystkich problemów. Ale jeśli usuniesz tę linię, zapisz plik, otwórz go w Visual Studio, zapisz ponownie i spójrz ponownie, linia pojawi się ponownie!

Wygląda na to, że w Visual Studio istnieje tylko jeden ściśle zakodowany wyjątek, a jest to * .Designer.cs. Tak więc nie ma rozwiązania tego problemu.

0

Można kliknąć plik źródłowy prawym przyciskiem myszy, wybrać "Wyświetl kod", a następnie kliknąć "Ustaw jako domyślny". To trochę tępy instrument, ale jeśli masz więcej fałszywych komponentów w swoim rozwiązaniu niż prawdziwe komponenty, może ci się to udać.