2010-10-21 24 views
5

Ngay bây giờ tôi làm rõ điều này có thể là một câu hỏi trùng lặp từ: Right-aligned labels in WinForms Nhưng không có câu trả lời nào thỏa mãn tôi.WinForms: nhãn căn phải tự động hóa

Vấn đề rất đơn giản:

Tôi có nhãn được căn chỉnh phù hợp với tự động được đặt thành đúng. Các hành vi mong đợi là khi văn bản được tăng lên tọa độ phải vẫn không thay đổi. Nhưng đó không phải là những gì nó xảy ra. Tọa độ trái là một tọa độ không thay đổi.

Ứng dụng của tôi là loại nhỏ, vì vậy tôi không muốn bắt đầu đặt điều khiển vào bảng điều khiển và vì vậy .. Vì vậy, tôi đã thử tất cả các giải pháp có liên quan đến thuộc tính nhãn ONLY. Người duy nhất làm việc là đặt autosize thành false và over-size nó. (Giải pháp được chấp nhận của câu hỏi Nº1692383). Nhưng nó thực sự là xấu xí !!! Tôi thực sự muốn tránh điều đó.

Bất kỳ giải pháp khả thi nào khác ??

Cảm ơn trước!

+0

vui lòng xem câu trả lời đã chỉnh sửa của tôi. Phiên bản gốc không hoạt động chính xác khi biểu mẫu được thay đổi kích thước. –

+0

Tahnks @adrift !!! Tôi đã không nhận ra người đầu tiên không làm việc. – Diego

Trả lời

7

Một giải pháp là chụp lề phải của nhãn trong hàm tạo và trong nhãn SizeChanged sự kiện, đặt lại vị trí dựa trên lề phải ban đầu, nhãn hiện tại Width và nhãn hiện tại Width.

Điều này cũng giả định nhãn được neo ở bên phải để xử lý thay đổi kích thước biểu mẫu.

private readonly int _rightMargin; 

public Form1() 
{ 
    InitializeComponent(); 

    _rightMargin = label1.Parent.Width - label1.Right; 
} 

private void label1_SizeChanged(object sender, EventArgs e) 
{ 
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top); 
} 
Các vấn đề liên quan