2013-10-21 13 views
8

Tôi đã viết ứng dụng C# kiểu Kiosk sử dụng studio trực quan chạy khi khởi động và sẽ mở rộng thành toàn màn hình và bao gồm thanh tác vụ.Trên thanh tác vụ khởi động bao gồm toàn màn hình C# application

Tôi đang làm kiểu thiết lập bảng thông thường để không, và điền các khoảng cách và nó hoạt động hoàn hảo nếu tôi chỉ khởi chạy ứng dụng theo cách thủ công.

Khi ứng dụng khởi chạy khi khởi động (bằng cách cắt ngắn trong thư mục khởi động trong menu bắt đầu), thanh tác vụ kết thúc ở đầu chương trình và nhấp vào đâu đó trên biểu mẫu không mang biểu mẫu quay lại đầu trang.

Có ai đó gặp sự cố này trước đây hoặc biết cách giải quyết có thể xảy ra.

+0

Không chắc chắn nhưng có thể có o có chương trình gián đoạn nó .. – Rohit

+0

Đây là một cài đặt sạch của Windows XP Tôi không thể nhớ những gì phiên bản, những thứ duy nhất đã được cài đặt là .net distributable và một số trình điều khiển cho một bộ điều hợp USBCAN. – Hugoagogo

+0

Bạn sử dụng công nghệ nào? WPF hoặc WinForms? – galenus

Trả lời

0

Cách giải quyết: Khi bắt đầu, hãy hủy explorer.exe - bạn không cần nó -> thanh tác vụ biến mất. Khi cần thiết, bắt đầu nó bằng cách sử Task Manager

+0

Có cách nào dễ dàng để kiểm tra xem nhà thám hiểm đã mở hoàn toàn chưa trước khi hiển thị biểu mẫu – Hugoagogo

+0

Mở hoàn toàn? Bạn có thể cụ thể hơn không? – Ondrej

+0

Mở hoàn toàn như trong thanh tác vụ đang được hiển thị sao cho khi biểu mẫu bắt đầu nó sẽ chồng lên thanh tác vụ đúng cách. – Hugoagogo

3

Tôi cũng đã làm điều này một thời điểm khác:

public class Screensize 
{ 
    /// <summary> 
    /// Selected Win AI Function Calls 
    /// </summary> 

    public class WinApi 
    { 
     [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")] 
     public static extern int GetSystemMetrics(int which); 

     [DllImport("user32.dll")] 
     public static extern void 
      SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter, 
         int X, int Y, int width, int height, uint flags); 

     private const int SM_CXSCREEN = 0; 
     private const int SM_CYSCREEN = 1; 
     private static IntPtr HWND_TOP = IntPtr.Zero; 
     private const int SWP_SHOWWINDOW = 64; // 0x0040 

     public static int ScreenX 
     { 
      get { return GetSystemMetrics(SM_CXSCREEN); } 
     } 

     public static int ScreenY 
     { 
      get { return GetSystemMetrics(SM_CYSCREEN); } 
     } 

     public static void SetWinFullScreen(IntPtr hwnd) 
     { 
      SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW); 
     } 
    } 

    /// <summary> 
    /// Class used to preserve/restore state of the form 
    /// </summary> 
    public class FormState 
    { 
     private FormWindowState winState; 
     private FormBorderStyle brdStyle; 
     private bool topMost; 
     private Rectangle bounds; 

     private bool IsMaximized = false; 

     public void Maximize(Form targetForm) 
     { 
      if (!IsMaximized) 
      { 
       IsMaximized = true; 
       Save(targetForm); 
       targetForm.WindowState = FormWindowState.Maximized; 
       targetForm.FormBorderStyle = FormBorderStyle.None; 
       targetForm.TopMost = false; 
       WinApi.SetWinFullScreen(targetForm.Handle); 
      } 
     } 

     public void Save(Form targetForm) 
     { 
      winState = targetForm.WindowState; 
      brdStyle = targetForm.FormBorderStyle; 
      topMost = targetForm.TopMost; 
      bounds = targetForm.Bounds; 
     } 

     public void Restore(Form targetForm) 
     { 
      targetForm.WindowState = winState; 
      targetForm.FormBorderStyle = brdStyle; 
      targetForm.TopMost = topMost; 
      targetForm.Bounds = bounds; 
      IsMaximized = false; 
     } 
    } 

và chỉ cần gọi theo hình thức của bạn:

screensize.Maximize(this) 

Tôi nghĩ rằng bạn có ý nghĩa này

Và bây giờ tôi thấy bài đăng này là từ năm 2013 ...

+0

Cảm ơn vì điều này, tôi sẽ không kiểm tra điều này trong một vài tuần nhưng nó có vẻ tốt và một giải pháp khá thẳng, UpVoted cho bây giờ và sẽ đánh dấu là chính xác sau khi tôi đã có cơ hội sửa lỗi này. – Hugoagogo

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