확장 된 Windows 스타일을 사용해야합니다.이 코드는 어떻게 수행하는지 보여줍니다.
이 양식은 마우스 상호 작용을 양식 뒤에 전달하며 다른 최상위 창을 활성화 한 상태에서도 TopMost로 표시됩니다.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
const int GWL_EXSTYLE = -20;
const int WS_EX_TRANSPARENT = 0x20;
[DllImport("user32.dll", CharSet=CharSet.Auto)]
extern static int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
extern static int SetWindowLong(IntPtr hWnd, int nIndex, int nStyle);
private void Form1_Load(object sender, EventArgs e)
{
var style = GetWindowLong(this.Handle, GWL_EXSTYLE);
var newStyle = style | WS_EX_TRANSPARENT;
SetWindowLong(this.Handle, GWL_EXSTYLE, newStyle);
}
private void timer1_Tick(object sender, EventArgs e)
{
this.BringToFront();
}
}
사용자가 양식과 상호 작용하는 것은 약간의 트릭이지만, 수행하려는 작업에 대한 자세한 내용을 제공해야합니다.
항상 창을 맨 위에 표시하려면 타이머를 100ms 간격으로두고 양식 속성 TopMost을 true로 설정하십시오.
항상 상단에 위치하도록 설정된 다른 프로그램이나 항상 상단에 위치하도록 설정되지 않은 프로그램 위에 있어야 할 것으로 예상됩니까? 전자는 정말로 할 수 없지만 후자는 확실합니다. – Servy
모든 프로그램의 맨 위에 있지만 항상 맨 위에 있지 않도록 설정된 프로그램의 맨 위에 배치하는 것이 좋습니다. – user3599771
그리고 "TopMost"설정이 작동하지 않는다면 어떤 방식으로 작동하지 않습니까? 꼭 필요한 기능을 수행해야하기 때문에? – Servy