2009-06-10 45 views
8

Tôi có một biểu mẫu tôi đặt thành Tối đa, nhưng vì một số lý do, màn hình bỏ qua thanh tác vụ và tối đa hóa toàn bộ màn hình. Đó có phải là điển hình? Có cách giải quyết nào không?Màn hình tối đa bỏ qua thanh tác vụ

Tôi đang chạy Windows XP   với một thiết lập màn hình kép (thanh công cụ trong cửa sổ đầu tiên/tiểu học).

+0

là [ShowInTaskbar] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form. showintaskbar.aspx) thuộc tính được đặt thành False? – Shoban

+1

Gán thuộc tính MaximizedBounds. –

Trả lời

6

Một điều tôi gạt ra khỏi các mô tả - I'd tắt vào nút maximize. Khi tôi kiểm tra chuyển tài sản đó trở lại, thanh tác vụ xuất hiện trở lại. Rõ ràng nó giả định nếu bạn không muốn một nút tối đa, bạn đang tạo ra một ứng dụng kiosk theo phong cách mà bạn không muốn người dùng của bạn nhìn thấy bất cứ điều gì ngoài màn hình ứng dụng. Không chính xác những gì tôi mong đợi, nhưng công trình tôi đoán.

3

Đặt biên giới hình thức để None trước khi thực hiện nó tối đa.

Mã này sẽ làm việc trong một màn hình duy nhất:

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.FormBorderStyle = FormBorderStyle.None; 
    this.WindowState = FormWindowState.Maximized; 
} 

tôi đã không kiểm tra kịch bản màn hình kép kể từ khi tôi không có điều này tại thời điểm này. : P

EDIT: Tôi không hiểu "Màn hình tối đa Bỏ qua Thanh tác vụ". Bỏ qua có nghĩa là gì?

Bạn có muốn hình thức của bạn để trang trải các thanh tác vụ và lấp đầy toàn bộ màn hình?

+0

Ông có nghĩa là hình thức của mình bao gồm toàn bộ màn hình, thậm chí ẩn thanh tác vụ mà anh ta không muốn. –

+0

Để thêm vào đó, anh ta nên kiểm tra thuộc tính FormBorderStyle của biểu mẫu của mình và đảm bảo nó KHÔNG được đặt thành FormBorderStyle.None. –

3

Nếu bạn không muốn kích hoạt lại các nút maximize, bạn có thể thiết lập kích thước của cửa sổ:

private void Maximize() 
{ 
    Screen screen = Screen.FromPoint(this.Location); 
    this.Size = screen.WorkingArea.Size; 
    this.Location = Point.Empty; 
} 

(WorkingArea là khu vực của màn hình có thể được sử dụng bởi các ứng dụng, không bao gồm các thanh tác vụ và thanh công cụ khác)

+0

Không hoạt động - tối ưu hóa trình đơn sys không gọi phương thức 'Maximize()' –

+1

@ZachSaw, tất nhiên là không, tại sao lại như vậy? Đó là một phương pháp bạn phải gọi cho chính mình. –

+0

Điều đó không hiển thị ở trạng thái tối đa khi bạn có cửa sổ bật lên sysmenu! –

12

Nếu bạn đang sử dụng FormBorderStyle.None sau đó nó rất đơn giản để chắc chắn rằng nó không bao gồm các thanh tác vụ khi được phóng to:

this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size; 

nó w bị bệnh có thể làm việc cho các phong cách biên giới khác và có lẽ là cách sạch nhất để đảm bảo biểu mẫu của bạn không bao gồm thanh tác vụ.

+5

Có lẽ bạn nên sử dụng 'Screen.FromControl (this)' thay vì 'Screen.PrimaryScreen'. Nếu người dùng có nhiều màn hình, điều khiển của bạn sẽ không nhất thiết phải ở trên màn hình chính. –

+0

Không hoạt động trên các màn hình. Nếu bạn đặt 'MaximumSize' thành dạng' OnMove', bạn sẽ kết thúc với một biểu mẫu bị giới hạn về chiều rộng của màn hình ở chế độ không tối đa (đây không phải là hành vi mặc định). –

+1

Không hiệu quả với tôi –

2

Taskbar có thể được gắn ở bên trái, trên, dưới, bên phải. Nếu bạn muốn tối đa hóa cửa sổ mà không cần thanh tác vụ overlayed, sử dụng mã này:

 

...cut... 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      // set default start position to manual 
      this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; 


      // set position and size to the Form. 
      this.Bounds = Screen.PrimaryScreen.WorkingArea; 


     .... 
      InitializeComponent(); 
     } 

...cut... 
0

Khi bạn thiết lập các phong cách biên giới dưới hình thức không ai sánh kịp các hình thức sẽ ẩn thanh tác vụ. Để giải quyết vấn đề này, bạn phải đặt MaximumSize của biểu mẫu theo cách thủ công. Nếu cửa sổ tự động ẩn thanh tác vụ, biểu mẫu sẽ bao gồm cả thanh tác vụ ẩn! Để giải quyết vấn đề này, hãy giảm chiều cao tối đa của một pixel (nếu thanh tác vụ của bạn ở dưới cùng)!

 Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _ 
            My.Computer.Screen.WorkingArea.Size.Height - 1) 
3

Một điều tôi gạt ra khỏi các mô tả - I'd tắt vào nút maximize. Khi tôi kiểm tra chuyển tài sản đó trở lại, thanh tác vụ xuất hiện trở lại. Rõ ràng nó giả định nếu bạn không muốn một nút tối đa, bạn đang tạo ra một ứng dụng kiosk theo phong cách mà bạn không muốn người dùng của bạn nhìn thấy bất cứ điều gì ngoài màn hình ứng dụng. Không chính xác những gì tôi mong đợi, nhưng công trình tôi đoán.

Tôi gặp sự cố này và đã giải quyết sự cố này bằng sự trợ giúp của Jeff. Trước tiên, hãy đặt chế độ cửa sổ thành Tối đa. nhưng Không tắt MaximizeBox. Sau đó, nếu bạn muốn MaximizeBox bị vô hiệu bạn nên làm điều đó cách lập trình:

private void frmMain_Load(object sender, EventArgs e) 
{ 
    this.MaximizeBox = false; 
} 
Các vấn đề liên quan