Domanda

C'è un modo per rendere la forma semi-trasparente mentre viene spostato e poi diventano opachi quando non viene spostato più? Ho provato l'evento Form_Move senza fortuna.
 Sono bloccato, qualsiasi aiuto?

È stato utile?

Soluzione

Il motivo caricamento del modulo come semitrasparenti è perché la forma deve essere spostato nella posizione di partenza, che innesca l'evento movimento. È possibile superare che, basando sia l'opacità è impostata, se il modulo è a pieno carico.

L'evento ResizeEnd dopo una forma ha terminato in movimento, in modo da qualcosa come questo dovrebbe funzionare:

bool canMove = false;

private void Form1_Load(object sender, EventArgs e)
{
    canMove = true;
}

private void Form1_Move(object sender, EventArgs e)
{
    if (canMove)
    {
        this.Opacity = 0.5;
    }
}

private void Form1_ResizeEnd(object sender, EventArgs e)
{
    this.Opacity = 1;
}

Altri suggerimenti

Per farlo correttamente mi aspetto che tu avresti bisogno di ignorare il messaggio di trasformazione per rispondere alla barra del titolo che si terrà, ecc Ma si potrebbe barare, e basta usare un timer in modo che si fanno opaco per un po 'quando viene spostato, in modo continuo movimento così:

[STAThread]
static void Main()
{
    using (Form form = new Form())
    using (Timer tmr = new Timer())
    {
        tmr.Interval = 500;
        bool first = true;
        tmr.Tick += delegate
        {
            tmr.Stop();
            form.Opacity = 1;
        };
        form.Move += delegate
        {
            if (first) { first = false; return; }
            tmr.Stop();
            tmr.Start();
            form.Opacity = 0.3;
        };
        Application.Run(form);
    }
}

Ovviamente si potrebbe ottimizzare questo per fade in / out, ecc - questo è solo per mostrare il concetto generale

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top