Frage

sind Attribute genial. Aber ist es möglich, eine C # Attributklasse zu erstellen, dass, wenn markiert, macht Ihre Anwendung in die Taskleiste minimieren?

Technisch wäre das Attribut müssen sich auf die Klasse der Hauptform platziert werden. Sobald der Benutzer auf der X-Schaltfläche klickt, sollte diese Form nicht beenden, sollte aber in die Taskleiste minimiert. Das Symbol für die Minimierung sollte auch im Attribute angegeben werden.

Ist dies technisch machbar? Ich kann keine Informationen zum Überschreiben Klassencode von einem auf dieser Klasse platziert Attribute finden. (Sie müssen mindestens überschreiben eine Methode, um es in dem Tray zu machen zu minimieren.)

War es hilfreich?

Lösung

Warum dies nicht nur tun:

class TrayForm : Form
{
    NotifyIcon notifyIcon = new NotifyIcon();
    protected override void OnFormClosing(FormClosingEventArgs e)
    {
        if (e.CloseReason != CloseReason.WindowsShutDown && e.CloseReason != CloseReason.ApplicationExitCall)
        {
            e.Cancel = true;
            this.Hide();
            this.notifyIcon.Visible = true;
        }

        base.OnFormClosing(e);
    }

    protected override void OnSizeChanged(EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {
            this.Hide();
            this.notifyIcon.Visible = true;
        }

        base.OnSizeChanged(e);
    }
}

Andere Tipps

Das mit Form Vererbung erreicht leichter werden könnte eher als Attribute, etwas ist immer noch die Attribute zur Laufzeit haben, zu interpretieren, um die gewünschte Wirkung zu erzielen.

Mit Vererbung können Sie einfach Setup die Klasse, wie Sie möchten und haben im Wesentlichen ein Opt-in oder Opt-out-Fähigkeit (auch mit einem Attribut, dies zu tun) verhalten soll.

Es ist sicherlich möglich, aber ich würde vorschlagen, dass die Form close () Methode überschrieben und einfach etwas Minimierungs Code in dort setzen. Es ist einfach, logisch und einfach für die Zukunft Entwickler zu folgen.

Einige Beispielcode, wie dies zu erreichen ist:

http://www.dreamincode.net/code/snippet2660.htm

und

http://www.dreamincode.net/forums/showtopic116283.htm

Es ist nicht möglich, mit der üblichen Form Klasse. Aber es ist möglich, eine eigene Klasse zu erstellen, die erbt von Form und auch ein solches Attribut unterstützt. Aber das würde nur die Dinge unnötig kompliziert machen, wäre es wahrscheinlich besser, eine MinimizeToTray Eigenschaft dieser Klasse hinzuzufügen.

(wie das Beispiel PhilipW vorgesehen, aber mit einer Eigenschaft hinzugefügt, um das Verhalten zu steuern)

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