Windows 양식에서 HitTests를 비활성화하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/929888

  •  06-09-2019
  •  | 
  •  

문제

Windows 양식 창에서 HitTest를 비활성화 할 수 있습니까? 그렇다면 어떻게해야합니까? 클릭 할 수없는 불투명 한 창이 원합니다.

미리 감사드립니다, Christoph

도움이 되었습니까?

해결책

다른 프로세스와 대화하는 경우 Windows 메시지를 보내고 검색해야합니다.

http://www.c-sharpcorner.com/uploadfile/thmok/sendingwindowsmessageincsharp112005042819am/sendingwindowsmessageincsharp.aspx

이 링크를 살펴보십시오.

창 메시지를 사용하여 C#에서 글로벌 시스템 후크를 구현합니다.http://www.codeproject.com/kb/system/wilsonsystemglobalhooks.aspx

글로벌 시스템 후크를 사용하면 응용 프로그램이 다른 응용 프로그램을위한 Windows 메시지를 가로 채도록 허용합니다. 이것은 C#에서 구현하기가 항상 어려웠습니다 (MSDN에 따르면). 이 기사는 C ++에서 DLL 래퍼를 작성하여 Hooking Application의 메시지 큐에 메시지를 게시하여 글로벌 시스템 후크를 구현하려고 시도합니다.

다른 팁

움직일 수없는 창을 원하십니까? Formborderstyle을 없애지 않습니다.

글쎄, 나는 아직도 당신의 유스 케이스에 대해 많이 알지 못하지만 어쨌든 찌르고 간단한 예를 제공 할 것입니다.

나는 당신이 떠 다니는 형태에서 기본 형태의 무언가를 제어하고 싶다고 가정합니다. 이렇게하려면 부동 양식에서 주요 형태에 대한 참조가 필요합니다. 당신은 다음과 같은 기본 형식의 인스턴스를 수용하는 부유 형식의 생성자 과부하를 만들어이를 수행합니다.

    public FloatingForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }

플로팅 양식에는 FloatingFormTextBox라는 텍스트 상자와 Button1이라는 버튼이 포함되어 있습니다. 부동 양식의 부분 클래스는 다음과 같습니다.

public partial class FloatingForm : Form
{
    MainForm _mainForm;

    public FloatingForm()
    {
        InitializeComponent();
    }

    public FloatingForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        _mainForm.DoSomething(floatingFormTextBox.Text);
    }
}

기본 양식에는 MainFormTextBox라는 텍스트 상자가 포함되어 있습니다. 기본 형태가로드되면 플로팅 형태의 인스턴스를 생성하여 플로팅 양식의 새로운 생성자 과부하에 대한 참조를 전달합니다. 기본 양식의 부분 클래스는 다음과 같습니다.

public partial class MainForm : Form
{
    FloatingForm _floatingForm;

    public MainForm()
    {
        InitializeComponent();
    }

    public void DoSomething(string text)
    {
        mainFormTextBox.Text = text;
        this.Refresh();
    }

    private void MainForm_Load(object sender, EventArgs e)
    {
        _floatingForm = new FloatingForm(this);
        _floatingForm.Show();
    }
}

이제 플로팅 양식의 텍스트 상자에 텍스트를 넣고 버튼을 클릭하면 텍스트가 기본 양식의 텍스트 상자에 나타납니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top