2010-09-04 40 views
5

Tôi muốn hiển thị biểu tượng chiến thắng ở góc dưới bên phải ngay phía trên khay hệ thống,Hiển thị biểu tượng thắng trên khu vực thông báo

Làm cách nào để làm điều đó? Đây là mã của tôi:

public static void Notify() 
{   
    Rectangle workingArea = Screen.PrimaryScreen.WorkingArea; 
    Form fm = new Form(); 
    fm.ClientSize = new Size(200, 200); 
    int left = workingArea.Width - fm.Width; 
    int top = workingArea.Height - fm.Height; 
    fm.Location = new Point(left, top); 
    fm.ShowInTaskbar = false; 
    fm.ShowIcon = false; 
    fm.MinimizeBox = false; 
    fm.MaximizeBox = false; 
    fm.FormBorderStyle = FormBorderStyle.FixedToolWindow; 
    fm.Text = "Test"; 
    fm.TopMost = true; 
    fm.Show(); 
} 

Trả lời

8

Tôi chỉ cố gắng này và nó làm việc cho tôi (lưu ý: mã này phải xuất hiện sau hình thức đã được hiển thị cho lần đầu tiên - ví dụ, bạn có thể đặt nó trong xử lý Load sự kiện của hình thức, hoặc đơn giản là bao gồm nó sau khi bất kỳ cuộc gọi đến Show):

Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea; 
int left = workingArea.Width - this.Width; 
int top = workingArea.Height - this.Height; 

this.Location = new Point(left, top); 

cho dù sử dụng WorkingArea hoặc Bounds tùy thuộc vào ý nghĩa của từ "over": nếu bạn muốn "ở trước", sau đó sử dụng Bounds, vì nó bao gồm khu vực bao phủ toàn bộ màn hình (bao gồm không gian đó chiếm bởi khay hệ thống); nếu bạn có nghĩa là "ở trên", sau đó sử dụng WorkingArea, chỉ bao gồm máy tính để bàn của người dùng.

Ngoài ra, hãy để tôi chỉ làm rõ rằng bạn muốn biểu mẫu thực tế của mình được hiển thị ở dưới đó, phải không? Nếu bạn muốn có một biểu tượng trong khu vực thông báo, đó là những gì các thành phần NotifyIcon là cho.

+0

Cảm ơn, tôi vừa cập nhật mã của tôi và liều lượng không hoạt động !!! –

+0

@ Data-Base: Di chuyển các dòng thiết lập vị trí của biểu mẫu thành * sau * bạn gọi 'Hiển thị'. Windows Forms thực hiện một điều lạ khi nó dường như bỏ qua bạn khi bạn đặt thuộc tính 'Location' trước khi biểu mẫu được hiển thị lần đầu tiên. –

+2

Tôi chỉ sử dụng fm.StartPosition = FormStartPosition.Manual; mã từ Hans Passant và nó hoạt động :-) –

4

Nếu bạn muốn xác định vị trí các hình thức trên/trước mặt của thanh tác vụ:

Đặt các hình thức sở hữu trên cùng là true. Bạn có thể sử dụng Screen.PrimaryScreen.Bounds để có được độ phân giải màn hình sau đó đặt vị trí biểu mẫu của bạn một cách thích hợp.


Nếu bạn chỉ muốn xác định vị trí các hình thức ngay trên thanh công cụ ở phía dưới bên phải sau đó bạn có thể làm như sau:

Trong thiết kế mẫu, goto Properties-> Sự kiện và thêm sự kiện Load để biểu mẫu của bạn.

Thêm dòng sau:

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.StartPosition = FormStartPosition.Manual; 
    int x = Screen.PrimaryScreen.WorkingArea.Width - this.Width; 
    int y = Screen.PrimaryScreen.WorkingArea.Height - this.Height; 
    this.Bounds = new Rectangle(x, y, this.Width, this.Height); 
} 
+0

Tôi * nghĩ * OP có nghĩa là "quá" như trong "ở trên" thay vì "trên đầu trang"; vì vậy 'TopMost' sẽ không phù hợp. Tôi có thể sai mặc dù. –

+0

Đúng là .. tốt bây giờ ông có các tùy chọn :) – hydrogen

+0

Cảm ơn tất cả, bây giờ tôi đã cố định câu hỏi của mình :-) –

5

Bạn quên này một:

 fm.StartPosition = FormStartPosition.Manual; 

Những gì bạn sẽ phải làm việc trên tiếp theo là đưa thanh taskbar, nói rằng, ở phía bên trái của màn hình và chạy mã trên một máy tính mà có video Thiết lập DPI ở một giá trị khác (như 125). Bạn chỉ có thể định vị chính xác biểu mẫu trong sự kiện Tải của nó. Không đặt kích thước máy khách.

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