Question

Est-il possible de désactiver le plus chaud sur une fenêtre Windows Forms, et si oui, comment puis-je le faire? Je veux avoir une fenêtre opaque qui ne peut pas être cliqué. Merci à l'avance, Christoph

Était-ce utile?

La solution

Si vous parlez à un processus différent, vous devez envoyer et récupérer des messages Windows.

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

Jetez un oeil à ce lien:

Utilisation des messages de fenêtre pour mettre en œuvre Crochets Système mondial en C # http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx

crochets du système mondial permettent à une application d'intercepter les messages Windows destinés à d'autres applications. Cela a toujours été difficile (impossible, selon MSDN) à mettre en œuvre en C #. Cet article tente de mettre en œuvre des crochets du système global en créant une enveloppe de DLL en C ++ que les messages des messages à la file d'attente de messages de l'application de crochetage.

Autres conseils

Voulez-vous une fenêtre qui ne peut être déplacé? Set FormBorderStyle sans pareil.

Eh bien, je ne sais toujours pas grand-chose au sujet de votre cas d'utilisation, mais je vais prendre un coup de poignard quand même, et fournir un exemple simple.

Je suppose que vous voulez contrôler quelque chose sur la forme principale de votre forme flottante. Pour ce faire, vous avez besoin d'une référence à votre principale forme de votre forme flottante. Vous faites cela en créant une surcharge constructeur dans la forme flottante qui accepte une instance de votre principale forme, comme ceci:

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

La forme flottante contient une zone de texte nommé floatingFormTextBox, et un bouton nommé Button1. La classe partielle pour la forme flottante ressemble à ceci:

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

La principale forme contient juste une zone de texte nommé mainFormTextBox. Lorsque les principales charges de forme, il crée une instance de la forme flottante, en passant une référence à lui-même à la nouvelle surcharge du constructeur de la forme flottante. La classe partielle pour la principale forme ressemble à ceci:

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

Maintenant, quand je mets du texte dans la zone de texte de la forme flottante et cliquez sur le bouton, le texte apparaît dans la zone de texte du formulaire principal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top