2009-07-02 4 views
0

아래 코드를 상상해보십시오. 첫 번째 창만 맨 위에 나타나고 이후의 모든 창은 어떤 이유로 든 프로그래밍 방식으로 집중 될 수 없으며 배경에 나타납니다. 어떤 생각을 어떻게 해결할 수 있을까요? BTW, 정적 메서드/속성은 허용되지 않으며 전역 속성입니다.첫 번째 표시된 창만 포커스가있는 이유

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

     Thread t1 = new Thread(CreateForm); 
     t1.SetApartmentState(ApartmentState.STA); 
     t1.Start(); 
     t1.Join(); 

     t1 = new Thread(CreateForm); 
     t1.SetApartmentState(ApartmentState.STA); 
     t1.Start(); 
     t1.Join(); 
    } 

    private static void CreateForm() 
    { 
     using (Form f = new Form()) 
     { 
      System.Windows.Forms.Timer t = new System.Windows.Forms.Timer 
      { 
       Enabled = true, 
       Interval = 2000 
      }; 
      t.Tick += (s, e) => { f.Close(); t.Enabled = false; }; 

      f.TopMost = true; 
      Application.Run(f); 
     } 
    } 
+0

어떻게하면 'TopMost'로 두 항목을 가질 수 있습니까? 박스 오피스의 대기열을 상상해보십시오. 대기열에서 첫 번째 사람인 경우 다른 사람이 첫 번째 자리를 차지할 수 없습니다. 누군가가 첫 번째 자리를 차지하면 자동으로 첫 번째 자리를 잃게됩니다. 달성하고자하는 점을 말씀해 주시겠습니까? – SolutionYogi

+0

Join()으로 인해 창은 동시에 만들어지지 않고 순서대로 표시됩니다. –

답변

0

한스 패전트 solved the problem : SetForegroundWindow() (P/Invoke) 만 사용하십시오. Shees, 나는 그것을 가지고 있어야합니다 :-)