8

Chúng tôi đã thực hiện các tiêu chuẩn mã hóa mới, yêu cầu các thành viên riêng của chúng tôi có một dấu gạch dưới hàng đầu. Cũng giống như vậy:Bạn có thể thay đổi thế hệ mã thiết kế VS Win Forms không?

private System.Windows.Forms.Label _label; 

Thật không may VS sẽ đưa ra mặc định dưới đây khi bạn kéo một nhãn mới lên hình của bạn:

private System.Windows.Forms.Label label1; 

Có cách nào để thay đổi mặc định:

private System.Windows.Forms.Label _label1; 

Điều này liên quan đến tất cả các điều khiển, không chỉ nhãn, và có chúng được sử dụng từ mã.

Chúc mừng,

Plamen

+6

Chắc chắn bạn sẽ thay đổi tên từ mặc định ... – Paddy

+0

Vâng, nhưng cách chúng ta có nó, nó được coi là _labelContactName, vì vậy chúng tôi phải nối thêm vào cuối tên. Đi đến đầu để thêm gạch dưới, trong khi không phải là một việc lớn, có vẻ là một sự lãng phí. Ngoài ra, mọi người không làm điều đó một cách nhất quán và tôi nghĩ rằng điều đó sẽ cải thiện nếu mặc định có dấu gạch dưới. –

+0

Nhãn sẽ được truy cập từ mã. Tôi đoán tại thời điểm này, tôi đang bảo vệ câu hỏi trên cơ sở nhất quán được cải thiện chỉ :). –

Trả lời

3

Ngoài việc tạo VS Add-In của riêng bạn để theo dõi mã được tạo và tự động đổi tên, không có cách nào để thực hiện những gì bạn muốn.

1

Câu trả lời này có thể không đạt yêu cầu, nhưng đó là tốt nhất mà tôi có thể cung cấp.

Tôi không nghĩ rằng bạn có thể yêu cầu Trình thiết kế Visual Studio tự động thêm dấu gạch dưới. Tuy nhiên, những gì bạn có thể làm là làm cho quá trình thêm dấu gạch dưới ít đau đớn hơn. Chỉ cần tạo các đối tượng của bạn mà không có dấu gạch dưới trước tiên; sau đó, sử dụng tính năng Refactor để đổi tên chúng. Chỉ cần đặt con trỏ của bạn vào tên của trường (label1, trong trường hợp của bạn) và nhấn F2 (hoặc nhấp chuột phải vào ⇒ Refactor ⇒ Rename). Điều này hoạt động bất kể bạn đang ở đâu trong mã, tất cả những gì bạn cần là đề cập đến số label1. Vì có thể bạn sẽ viết mã sử dụng các điều khiển của mình, có thể bạn sẽ vẫn tham chiếu đến các trường. Bạn cũng có thể nhấn F12 để đến thẳng các khai báo nơi bạn có được danh sách đầy đủ tất cả các điều khiển của mình; bạn có thể dễ dàng sử dụng F2 để đổi tên nhiều trong số đó ở một lần.

Ngẫu nhiên, tôi cũng sử dụng F2 để đổi tên hầu hết các tên trình xử lý sự kiện được tạo tự động. Ví dụ: tôi ghét xem tên phương thức như btnZoomIn_Click(). Tôi thích gọi phương thức zoomIn() vì đó là những gì nó làm. Thay vì Mainform_KeyPress() tôi có thể gọi nó là processKeyPress().

+0

Cảm ơn câu trả lời, Timwi, tôi biết khả năng tái cấu trúc của VS. Thay đổi tên tại thời gian thiết kế nhanh hơn rất nhiều sau đó thực hiện nó từ mã, tôi nghi ngờ nó được tối ưu hóa. Làm nó từ mã biên dịch tất cả các hội đồng của bạn ngay cả đối với tư nhân vì lý do gì. Tôi đang tìm kiếm một cái gì đó tôi có thể thiết lập và quên, và sẽ không yêu cầu bảo trì liên tục/công việc của con người. –

0

Bạn có thể đặt GenerateMember thành false.
Điều này không giải quyết được sự cố của bạn, nhưng tránh đặt tên sai, khi bạn không làm việc với điều khiển theo cách thủ công.

0

Trình chia sẻ lại có thể thực thi các quy ước đặt tên. Sau đó, nó chỉ là vấn đề mở tập tin .designer và nhấn alt + enter, nhập vài lần.

11

Cá nhân tôi tin rằng mã được tạo tự động nên được loại trừ cho bất kỳ nguyên tắc mã hóa nào và v.v. Nó là an toàn để bỏ qua chúng trong hầu hết các kịch bản, trừ khi máy phát điện có lỗi.

Vui lòng tranh luận với bất kỳ ai đã viết hướng dẫn mã hóa đó và yêu cầu anh ấy. Để loại trừ mã được tạo.

+2

Tôi đồng ý. Nếu bạn thử tạo mã được tạo tự động, bạn sẽ không bao giờ nhận được bất kỳ thứ gì được thực hiện hiệu quả. Nó có thể là "chỉ" mã WinForms Designer ngày hôm nay, nhưng ngày mai bạn có thể phải đối phó với các máy khách của WCF, ánh xạ Entity Framework và thậm chí cả những con quái vật giống như những gì ANTLR tạo ra. Lex là đúng, mã được tạo tự động phải được loại trừ khỏi các loại yêu cầu này. –

0

Như BlueRaja đã nói, bạn có thể sử dụng Resharper. Sau đó, bạn có thể sử dụng tính năng dọn sạch mã (Ctrl-E, C), tuy nhiên điều này không hoạt động trên các tệp được tạo, do đó bạn sẽ phải đổi tên tạm thời. Tôi không làm việc, vì vậy tôi không thể kiểm tra xem có tùy chọn nào để bật tùy chọn cho các tệp được tạo ở đâu đó không.

Lưu ý rằng bạn sẽ phải chạy lại sau mỗi lần tệp được tạo lại.

2

Tôi biết đó là một câu hỏi cũ nhưng tôi đã làm việc với các nhà thiết kế tùy chỉnh gần đây và tôi có một giải pháp cho những gì bạn muốn. Thêm lớp này đến bạn dự án:

using System.ComponentModel; 
using System.ComponentModel.Design; 
using System.Windows.Forms; 
using System.Windows.Forms.Design; 

namespace WindowsFormsApplication1 
{ 
    [Designer(typeof(BaseFormDesigner), typeof(IRootDesigner))] 
    public class BaseForm : Form 
    { 
     public BaseForm() 
     { 
     } 
    } 

    public class BaseFormDesigner : DocumentDesigner 
    { 
     public override void Initialize(IComponent component) 
     { 
      base.Initialize(component); 
      var service = GetService(typeof(IComponentChangeService)) as IComponentChangeService; 
      service.ComponentAdded += service_ComponentAdded; 
     } 

     private void service_ComponentAdded(object sender, ComponentEventArgs e) 
     { 
      if (e.Component is Control && !(e.Component is Form)) { 
       var control = (Control)e.Component; 
       if (!control.Name.StartsWith("_")) { 
        var service = GetService(typeof(IComponentChangeService)) as IComponentChangeService; 
        PropertyDescriptor desc = TypeDescriptor.GetProperties(control)["Name"]; 
        service.OnComponentChanging(e.Component, desc); 
        string oldValue = control.Name; 
        string newValue = "_" + oldValue; 
        desc.SetValue(control, newValue); 
        service.OnComponentChanged(e.Component, desc, oldValue, newValue); 
       } 
      } 
     } 
    } 
} 

Và sau đó thay đổi hình thức lớp cơ sở của bạn từ Form đến BaseForm:

using System; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : BaseForm 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

Đóng nhà thiết kế dưới mọi hình thức trước khi biên dịch lại dự án của bạn và sau đó mở lại nó và thử thêm một điều khiển , tên của nó sẽ bắt đầu bằng dấu gạch dưới.

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