Pergunta

Então, eu tenho duas formas, Mainform e extraform.
extraform é definido sempre deslocado para a direita de mainform quando mainform inicializa
Às vezes mainform ocupa ambos os monitores e extraform é empurrado para fora da tela para nunca mais ser visto novamente. Eu gostaria de evitar isso, se possível. Como posso fazê-lo? Ele deve suportar dois monitores, que podem ou não podem ter distância entre eles (ou seja, tela 1 é 20px à esquerda da tela 2).

Como posso fazer isso?

Foi útil?

Solução

Você pode usar a classe Screen para trabalhar para fora onde sua janela é relativo ao desktop. A classe A tela tem um método FromRectangle, para que possa descobrir qual tela você deve posicionar o formulário on (passando propriedade Bounds da sua forma in).

Cada objeto Tela tem uma propriedade Bounds, que você pode usar para comparar com a localização e tamanho da sua janela, e ajustá-los em conformidade.

Outras dicas

Depende do que você quer deve acontecer quando extraform é empurrado além dos limites da tela (s).

No entanto, para descobrir se é ou não está sendo empurrado para fora, é bastante simples usando a classe System.Windows.Forms.Screens. Então você pode fazer verificação de limites assim:

        foreach (var screen in Screen.AllScreens)
        {
            if(screen.Bounds.Contains(this.Bounds))
            {
                Console.WriteLine("Device "+screen.DeviceName+" contains form!");
            }
        }

Código assume estar em um formulário. Note-se que este código só imprime que uma tela contém o formulário se o formulário está completamente contido na tela. Mas isso deve ser bastante simples de correção, dependendo de suas necessidades.

Talvez a propriedade DesktopLocation em seus formulários podem lhe dar uma pista sobre o que está acontecendo com o que está acontecendo com eles

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top