Sử dụng Biểu mẫu Windows Tôi muốn định vị cửa sổ thành các coords cụ thể. Tôi nghĩ rằng nó có thể được thực hiện một cách đơn giản, nhưng sau mã không làm việc ở tất cả:Định vị cửa sổ C#
public Form1()
{
InitializeComponent();
this.Top = 0;
this.Left = 0;
}
Tuy nhiên, khi chỉ nhận được một xử lý cho cửa sổ đó, nó hoạt động tốt:
public Form1()
{
InitializeComponent();
IntPtr hwnd = this.Handle;
this.Top = 0;
this.Left = 0;
}
Bạn có thể thấy rằng tôi không làm việc với con trỏ đó chút nào. Tôi tìm thấy tại MSDN tuyên bố sau:
Giá trị của thuộc tính Xử lý là Windows HWND. Nếu tay cầm có chưa được tạo, việc tham chiếu thuộc tính này sẽ bắt buộc xử lý sẽ được tạo.
Điều đó có nghĩa là chúng tôi chỉ có thể đặt vị trí cửa sổ SAU KHI tạo trình xử lý? Là setters Top/Left sử dụng xử lý này trong nội bộ? Cảm ơn bạn đã làm rõ.
Không trả lời câu hỏi của bạn, nhưng bạn có thể ghi đè phương thức 'OnHandleCreated' để tránh cuộc gọi đến' this.Handle'. Tôi đồng ý nó là lạ rằng 'this.Handle' dường như kiểm tra và tạo ra các xử lý cơ bản, trong khi các thuộc tính khác phụ thuộc vào xử lý cơ bản thì không. –
bạn đã cố gắng đặt chúng trong nhà thiết kế chưa? –
Tôi biết tôi có thể giải quyết vấn đề này bằng nhiều cách. Tôi chỉ muốn biết tại sao nó hoạt động theo cách này bởi vì trong các khung công tác khác (Qt, wxWidgets, MFC ...), bạn có thể đặt vị trí cửa sổ của mình trực tiếp trong khi xây dựng cửa sổ. – Fremen