Đối với bất kỳ hộp thoại tùy chỉnh (theo mẫu) trong một ứng dụng WinForm tôi có thể thiết lập kích thước và vị trí của nó trước khi tôi hiển thị nó với:Thiết lập vị trí bắt đầu cho OpenFileDialog/SaveFileDialog
form.StartPosition = FormStartPosition.Manual;
form.DesktopBounds = MyWindowPosition;
Điều này đặc biệt quan trọng khi giao dịch với nhiều màn hình. Nếu không có mã như vậy, khi bạn mở một hộp thoại từ một ứng dụng mà bạn đã kéo đến một màn hình thứ hai, hộp thoại xuất hiện trên màn hình chính. Điều này thể hiện trải nghiệm người dùng kém.
Tôi tự hỏi nếu có bất kỳ móc nào để đặt vị trí cho tiêu chuẩn .NET OpenFileDialog và SaveFileDialog (không có thuộc tính StartPosition).
Điều này nghe rất đơn giản, nó phải hoạt động (ít nhất nó phải được kiểm tra)! Than ôi, cả 0-arg và 1-arg ShowDialog thất bại trong cùng một cách trên trường hợp kiểm tra này: 1. Chạy ứng dụng. 2. Gọi OpenFileDialog mới(). ShowDialog (điều này); hộp thoại xuất hiện trên cùng một màn hình như ứng dụng. 3. Đóng hộp thoại. 4. Kéo cửa sổ ứng dụng vào màn hình khác. 5. Gọi OpenFileDialog mới(). ShowDialog (điều này); hộp thoại xuất hiện trên màn hình * gốc *. Mặc dù tôi sử dụng OpenFileDialog mới trong bước 5, vẫn có một cái gì đó liên tục về vị trí ban đầu của ứng dụng chính. –
Tôi (cuối cùng :-) chọn câu trả lời của Marc là tốt nhất vì gần đây tôi đã phát hiện ra nó * áp dụng cho Windows 7. Máy của tôi là WinXP, nơi mà trường hợp thử nghiệm tôi phác thảo ở trên vẫn không thành công. Tôi quyết định thử các diễn đàn của Microsoft với cùng một câu hỏi và được cung cấp một giải pháp hoạt động cho WinXP - xem chủ đề này (http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/dec48489- 0a57-4baa-b401-82266be782e0) cho mã. –