簡體   English   中英

如何在Windows窗體上禁用命中測試?

[英]How can I disable hittests on a Windows Form?

是否可以在Windows窗體窗口上禁用Hittest,如果是這樣,我該怎么做? 我想要一個不透明的窗口,無法單擊。

在此先感謝Christoph

您是否想要一個無法移動的窗口? 將FormBorderStyle設置為none。

好吧,我仍然對您的用例了解不多,但是無論如何我都會采取行動,並提供一個簡單的示例。

我假設您想從浮動表單中控制主表單上的某些內容。 為此,您需要從浮動表單中引用主表單。 為此,您可以在浮動表單中創建一個構造函數重載來接受您的主表單實例,如下所示:

    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();
    }
}

現在,當我將一些文本放入浮動表單的文本框中並單擊按鈕時,文本將顯示在主表單的文本框中。

如果您正在討論其他過程,則需要發送和檢索Windows消息。

http://www.c-sharpcorner.com/UploadFile/thmok/SendingWindowsMessageinCSharp11262005042819AM/SendingWindowsMessageinCSharp.aspx

看一下這個鏈接:

使用窗口消息在C#中實現全局系統掛鈎http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx

全局系統掛鈎允許應用程序攔截旨在發送給其他應用程序的Windows消息。 一直很難(根據MSDN不可能)在C#中實現。 本文試圖通過在C ++中創建一個DLL包裝器來實現全局系統掛鈎,該DLL包裝器將消息發布到掛鈎應用程序的消息隊列中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM