2010-07-09 26 views
6

Tôi chỉ muốn biết liệu có thể gắn biểu mẫu cửa sổ lên trên màn hình người dùng không? Tôi đã cố gắng làm điều này bằng cách đặt thủ công vị trí của biểu mẫu của tôi theo tọa độ tôi muốn. Tuy nhiên, bằng cách sử dụng phương pháp này, cho phép người dùng thay đổi vị trí của biểu mẫu chỉ bằng cách kéo nó. Tôi muốn làm cho các hình thức neo đậu vào phần trên của màn hình kể từ khi hình thức cửa sổ này sẽ máy chủ như là một trình đơn cho dự án tôi đang làm.Làm cách nào để gắn một biểu mẫu cửa sổ trong C#?

Cảm ơn rất nhiều. :)

Trả lời

1

Vì vậy, sau một số chỉnh sửa, cuối cùng tôi đã có thể làm cho mã này hoạt động.

this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width/2 - 420), 0); 

tôi đặt dòng dưới InitializeComponent() và nó bến cảng hình thức của tôi đến trung tâm của màn hình với độ phân giải giá trị bất cứ điều gì.

3

Tôi sẽ xem xét sử dụng thuộc tính Control.Dock cùng với một trong các giá trị điều tra DockStyle.

Bạn cũng có thể cần phải chơi với số Layout để có thể bố trí các điều khiển của biểu mẫu khác nhau tùy thuộc vào số DockStyle được chọn.

Bạn sẽ cần, theo quan điểm của tôi, để xem xét tài sản Control.Location để bạn biết giá trị DockStyle để gắn biểu mẫu của mình với.

EDIT # 1

Windows Form của bạn có một tài sản Dock vì nó thừa hưởng từ Control.

Hãy xem xét những điều sau đây:

  1. Mỗi lần hình thức của bạn đến gần hơn với bên cánh phải, bạn của màn hình, ví dụ, hoặc các container MDI, bạn muốn cập cảng đúng, phải không? (Từ nhỏ chơi ở đây ... = P) Vì vậy, bạn phải đăng ký sự kiện Control.LocationChanged.

    private void myForm_LocationChanged(object sender, EventArgs e) { 
        if (this.Location.X > 900) then 
         this.Dock = DockStyle.Right; 
        else if (this.Location.X < 150) then 
         this.Dock = DockStyle.Left; 
        else if (this.Location.Y > 600) then 
         this.Dock = DockStyle.Bottom; 
        else if (this.Location.Y < 150) then 
         this.Dock = DockStyle.Top; 
        else 
         this.Dock = DockStyle.None; 
    } 
    

Thật vậy, thay vì giá trị không đổi, bạn nên sử dụng độ phân giải màn hình hiện tại và tính toán một tỷ lệ từ nó nơi bạn muốn docking của bạn xảy ra.

*** Tuyên bố từ chối trách nhiệm: **** Mã này được cung cấp như hiện trạng và chưa được kiểm tra. Thuật toán này hy vọng đủ để hướng dẫn bạn qua quá trình kết nối khi bạn cần. Hỗ trợ thêm có thể được cung cấp theo yêu cầu. * =)

Có vẻ như thuộc tính Form.DesktopLocation là công cụ đóng chặt cho công việc như cửa sổ chính của bạn, ví dụ như thùng chứa MDI của bạn. Đối với các cửa sổ khác, tôi sẽ đi cùng với một cái gì đó giống như mẫu mã được cung cấp.

Điều này có hữu ích không?

EDIT # 2

Nếu bạn muốn ngăn chặn chồng chéo Mẫu của, có lẽ là phương pháp Control.BringToFront() thể làm điều đó trước hoặc sau cuộc gọi của bạn với phương pháp Control.Show(), tùy thuộc vào những gì tốt nhất cho bạn.

+0

xin chào, cảm ơn bạn đã phản hồi. Tôi là một chút mới để sử dụng các chức năng mở rộng của Visual Studio 2008 và tôi hoàn toàn không biết làm thế nào tôi có thể sử dụng tài sản Control.Dock. Bạn có thể vui lòng cho tôi một số ví dụ về cách tôi có thể sử dụng các thuộc tính đó không? thanks :) – Smiley

+0

Đó là để điều khiển docking trong một hình thức, không phải để lắp ghép toàn bộ biểu mẫu. –

+0

@Jouke Van Der Maas: Tôi đoán bạn đã không đọc tất cả câu trả lời của tôi. Tôi đề cập đến thuộc tính 'DesktopLocation', nghĩa là, để gắn toàn bộ cửa sổ trên màn hình nền. Hơn nữa, tôi đề nghị rằng đây có thể là một công cụ tốt hơn cho công việc sau khi OP ra trước ý tưởng của mình. Vui lòng sửa đổi nhận xét của bạn cho phù hợp. –

0

Bằng cách đặt FormBorderStyle biểu mẫu của bạn thành None, bạn lấy tay cầm kéo ra khỏi người dùng để chúng không thể di chuyển nó qua chuột.

Sau đó, bạn chỉ cần đặt nó ở nơi bạn muốn.

Nếu bạn thực sự muốn loại bỏ các tùy chọn người dùng, bạn cũng có thể đặt thuộc tính ShowInTaskbar thành false

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