2010-09-20 12 views
11

Tôi đang gặp sự cố khi hiển thị màn hình giật gân trong một hệ thống có hai màn hình. Khi tôi khởi động ứng dụng trong màn hình chính, và sau đó con trỏ chuột được di chuyển đến màn hình thứ hai trước khi màn hình giật gân hiển thị, màn hình giật gân của tôi "theo sau" con trỏ chuột. Điều đó có nghĩa, màn hình giật gân được hiển thị trong màn hình thứ hai và sau khi nó kết thúc công việc của nó, biến mất và ứng dụng được hiển thị trong màn hình chính. Điều này trông khá xấu xí và không chuyên nghiệp.C# Làm thế nào để buộc một màn hình slpash được hiển thị trong màn hình chính trong một hệ thống hai màn hình?

Tôi đã cố gắng đặt thuộc tính FormStartPosition.CenterScreen trong thuộc tính của biểu mẫu và đặt trong thời gian chạy trong hàm tạo của biểu mẫu của tôi nhưng không có điều nào trong số này hoạt động. Nhân tiện, tôi đang sử dụng C#.

Bất kỳ gợi ý nào để đạt được màn hình giật gân được hiển thị trong cùng một màn hình như ứng dụng của tôi?

Bất kỳ trợ giúp nào sẽ được đánh giá cao.

Greetings, Victor

+0

Màn hình giật 'theo sau' con trỏ chuột rất khác thường. Điều này không xảy ra do tai nạn, chắc chắn có một số mã bạn có thể nhận xét để tắt tính năng này. Không thể giúp bạn tìm thấy mã đó tất nhiên. –

+0

@HansPassant: "Hành vi" này gây ra ứng dụng Winforms của tôi ngay cả trong .NET 4.0. Tôi đang hiển thị một hộp thoại đăng nhập khi khởi động, và nó liên tục nhấn mạnh vào việc xuất hiện trên màn hình nào xảy ra để "sở hữu" con chuột vào lúc này. Đó là * rất * gây phiền nhiễu. Thú vị hơn, bản sửa lỗi trong bài đăng này không hiệu quả với tôi. –

Trả lời

7

Trong Main, bạn cần phải buộc các hình thức để bắt đầu trên màn hình chính. Dưới đây là cách mở biểu mẫu tại (0, 0) trên màn hình chính.

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     Form1 f = new Form1(); 
     f.StartPosition = FormStartPosition.Manual; 
     f.Location = Screen.PrimaryScreen.Bounds.Location; 

     Application.Run(f); 
    } 
+0

Xin chào Alex, cảm ơn câu trả lời của bạn, thật không may điều này không giúp giải quyết vấn đề. Tôi nên đã đề cập rằng màn hình giật gân được bao gồm trong một dll (một thành phần được tạo ra trong C#) được gọi bởi một ứng dụng C++. Vì vậy, màn hình giật gân phải được hiển thị trong màn hình nơi ứng dụng C++ được khởi động. Tôi đã thử bao gồm dòng f.Location = Screen.PrimaryScreen.Bounds.Location; trong hàm tạo của màn hình slpash nhưng nó không giúp ích gì. Bất kỳ ý tưởng? – user452852

+1

Xin chào, vấn đề đã được giải quyết bao gồm các dòng follwing trong Form constructor của tôi: this.Location = Screen.PrimaryScreen.Bounds.Location; this.CenterToScreen; Nếu tôi sử dụng this.StartPosition = FormStartPosition.CenterScreen; sau đó tôi nhận được vấn đề được mô tả. Cảm ơn đã giúp đỡ ! – user452852

+0

Vui mừng vì điều này có thể giúp chỉ đạo bạn đi đúng hướng. –