2010-01-26 36 views
20

thể trùng lặp:
Is there an attribute I can add to a class so it will be edited as code, not in the designer?Có thể yêu cầu Visual Studio không xử lý tệp nguồn dưới dạng "thành phần" không?

Class với System.ComponentModel.Component trên con đường thừa kế của họ sẽ tự động được coi là "thành phần" trong Visual Studio (2008), gây ra một biểu tượng khác nhau cho các tập tin nguồn:

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

Trong khi biểu tượng xuất hiện Không thực sự quan trọng, thay đổi hành vi nhấp đúp thực sự gây phiền nhiễu: thay vì mở mã nguồn trong trình soạn thảo văn bản, Visual Studio hiện cho thấy một màn hình khuyến khích tôi thêm các thành phần vào lớp của tôi bằng cách kéo chúng "từ hộp công cụ". Tôi không muốn làm điều đó!

Tôi biết rằng tôi có thể nhấp chuột phải vào tệp nguồn và chọn "Xem mã", nhưng bất cứ khi nào tôi quên làm điều này, tôi đang chờ đợi một hộp thoại hoàn toàn vô dụng. Có cách nào để vô hiệu hóa các hành vi thành phần (tốt nhất là trong mã nguồn)?

+0

Nếu bạn đang mắc kẹt chờ đợi cho hộp thoại, máy tính của bạn quá chậm cho một máy phát triển :) Điều tương tự xảy ra nếu bạn chọn thêm một tệp lớp một phần cho biểu mẫu hoặc điều khiển. Mặc dù về cơ bản nó là một tệp chỉ mã riêng biệt, nó sẽ mở một nhà thiết kế (và nó, nếu tôi nhớ chính xác, không phải là một cho biểu mẫu thực tế). Gây phiền nhiễu, nhưng tôi có xu hướng nhấp chuột phải-> Xem mã trên các tệp không có ký hiệu mã đơn giản. – OregonGhost

+1

Heh, bây giờ nó phải mất rất nhiều thời gian để mở hộp thoại, nhưng giống như phải mất vài chu kỳ đồng hồ trong bộ não của tôi để tìm ra điều gì đó đã sai :) –

+1

Ngoài ra, dự án được đề cập là * không * winforms, vì vậy tôi thực sự thấy nó không công bằng khi VS đang làm phiền tôi với những nhà thiết kế pesky của nó. –

Trả lời

40

Bạn không thể sử dụng thuộc tính DesignerCategory để trang trí lớp học của mình?

Khi trang trí lớp học của bạn với thuộc tính này như hiển thị bên dưới, các tập tin cần mở trong 'xem mã' khi bạn click đúp vào nó:

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

Chính xác! Nó thực sự là lạ mà bạn * có * để sử dụng tên đủ điều kiện cho thuộc tính này, mặc dù :) –

+2

Người đọc trong tương lai lưu ý cẩn thận nhận xét của @ JørnSchou-Rode.Dường như trường hợp này chỉ hoạt động nếu bạn sử dụng tên đầy đủ của thuộc tính. – Boinst

+0

Trớ trêu thay, Visual Studio cho phép thiết lập các thuộc tính khác nhau trên một phần tệp khác nhau mô tả cùng một lớp và hành động tương ứng, nhưng biên dịch xem xét lỗi này. –

3

Vì OregonGhost đã được đề cập trong nhận xét của mình, điều này cũng xảy ra nếu bạn tạo tệp lớp một phần từ biểu mẫu.

Vấn đề còn tồi tệ hơn nữa. Nếu bạn có một cái nhìn vào hồ sơ dự án của bạn, bạn có thể tìm thấy mục cho mỗi tập tin bao gồm như sau:

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

Vì vậy, các giải pháp nên được để xoá dòng <SubType>...</SubType> nguyên nhân nó có vẻ là gốc rễ của mọi vấn đề. Nhưng nếu bạn xóa dòng này, hãy lưu tệp, mở nó trong Visual Studio, lưu lại và xem lại, dòng sẽ xuất hiện trở lại!

Dường như chỉ có một ngoại lệ được mã hóa cứng trong Visual Studio và đây là * .Designer.cs. Vì vậy, không có giải pháp để thực hiện vấn đề này.

0

Bạn có thể nhấp chuột phải vào tệp nguồn, chọn "Xem mã", sau đó nhấp "Đặt làm mặc định". Đó là một chút của một công cụ cùn, nhưng nếu bạn có nhiều thành phần sai trong giải pháp của bạn hơn so với các thành phần thực tế, sau đó bạn có thể tìm thấy nó thuận tiện.

Các vấn đề liên quan