Frage

Ist es möglich, die heißesten auf einem Windows Forms-Fenster zu deaktivieren, und wenn ja, wie mache ich das? Ich möchte ein undurchsichtiges Fenster haben, die nicht angeklickt werden können. Vielen Dank im Voraus, Christoph

War es hilfreich?

Lösung

Wenn Sie zu einem anderen Prozess zu sprechen, müssen Sie Windows-Nachrichten senden und empfangen.

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

Haben Sie einen Blick auf diesen Link:

Fenstermeldungen Verwendung in C # Global System Hooks zu implementieren http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx

Globales System Haken erlaubt eine Anwendung Windows-Nachrichten für andere Anwendungen vorgesehen abzufangen. Das ist schon immer schwierig gewesen (unmöglich, nach MSDN) in C # zu implementieren. Dieser Artikel versucht, durch die Schaffung eines DLL-Wrapper in C-Nachrichten an die Haken Anwendung Nachrichtenwarteschlange ++, die Beiträge globales System Haken zu implementieren.

Andere Tipps

Haben Sie ein Fenster möchten, die nicht verschoben werden können? Set Formborderstyle auf keine.

Nun, ich noch nicht viel über Ihren Anwendungsfall wissen, aber ich werde einen Stich sowieso nehmen, und bieten ein einfaches Beispiel.

Ich gehe davon aus, dass Sie etwas auf dem Hauptformular von Ihrem schwimmenden Form steuern möchten. Um dies zu tun, müssen Sie einen Verweis auf Ihre Hauptform von Ihrer schwimmenden Form. Sie tun dies, indem Sie einen Konstruktor Überlastung in Ihrem schwimmenden Form zu schaffen, die eine Instanz Ihrer Hauptform annimmt, wie folgt aus:

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

Das Floating-Formular enthält eine Textbox namens floatingFormTextBox, und eine Schaltfläche mit dem Namen Button1. Die partielle Klasse für die Floating-Form sieht wie folgt aus:

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

Das Hauptformular enthält nur eine Textbox namens mainFormTextBox. Wenn die Hauptform geladen wird, erzeugt es eine Instanz der schwimmenden Form, einen Verweis auf mich selbst vorbei an die neuen Konstruktor Überlastung der schwimmenden Form. Die partielle Klasse für die Hauptform sieht wie folgt aus:

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

Nun, wenn ich einen Text in das Textfeld der schwimmenden Form setzen und auf die Schaltfläche klicken, wird der Text zeigt in der Textbox der Hauptform auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top