2011-12-07 17 views
5

Tôi đang cố gắng tìm ra cách di chuyển System.Windows.Forms.Form được chỉ định sang một màn hình chính khác. Tôi có ComboBox với danh sách các màn hình có sẵn nơi người dùng chọn bất cứ màn hình nào anh ấy thích và ứng dụng của tôi được cho là di chuyển một trong các cửa sổ của nó lên màn hình đó.Di chuyển Biểu mẫu lên Màn hình được chỉ định

Tôi chỉ có một màn hình trên máy tính xách tay của mình và không có màn hình ngoài, do đó ComboBox trên máy tính của tôi chỉ cung cấp một tùy chọn. Tôi nghĩ rằng tối thiểu hóa cửa sổ mong muốn, di chuyển góc trái của nó ở giữa các giới hạn của màn hình được chọn và tối đa sẽ thực hiện công việc, đúng không? Tôi chỉ không thể kiểm tra nó. Đây có phải là cách tốt để đi không?

Cảm ơn trước!

+0

Bản sao có thể có của: http://stackoverflow.com/questions/2561104/c-sharp-winform-show-form-in-se –

+0

Bạn cần phải theo dõi và kiểm tra. Bạn không thể hỗ trợ mã bạn không bao giờ tự xác minh. –

Trả lời

5

Đây là những gì tôi đã làm, như một thử nghiệm đơn giản ...

Tôi đã thêm một lớp wrapper đơn giản để tôi có thể thay đổi những gì xảy ra trên cuộc gọi ToString (Tôi chỉ muốn thấy tên được liệt kê trong combo box)

private class ScreenObj 
{ 
    public Screen screen = null; 

    public ScreenObj(Screen scr) 
    { 
     screen = scr; 
    } 

    public override string ToString() 
    { 
     return screen.DeviceName; 
    } 
} 

trong trường hợp hình thức nạp tôi thêm này:

foreach(Screen screen in Screen.AllScreens) 
{ 
    cboScreens.Items.Add(new ScreenObj(screen)); 
} 

Và đối với những lựa chọn sự kiện thay đổi chỉ số của combo box tôi có điều này:

private void cboScreens_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    object o = cboScreens.SelectedItem; 
    if(null == o) 
     return; 

    ScreenObj scrObj = o as ScreenObj; 
    if(null == scrObj) 
     return; 

    Point p = new Point(); 

    p.X = scrObj.screen.WorkingArea.Left; 
    p.Y = scrObj.screen.WorkingArea.Top; 

    this.Location = p; 
} 

Nó di chuyển biểu mẫu đến góc trên bên trái của mỗi màn hình của tôi.

+1

cảm ơn bạn. đây chính xác là những gì tôi cần. –

+0

@ pennyrave, Mã này có hoạt động nếu tôi sử dụng cổng hdmi không? –