Ciągła zmiana pozycji Formularza

0

Witam,tworzę pewien program i chcę,aby po kliknięciu Buttona pojawiał się pod nim mój Formularz który ma ustawioną właściwość FormBorderStyle na None,niestety mimo iż ustawiłem w konstruktorze tego Formularza na właściwości Location gdzie sie ma pojawiać to za każdym razem gdy klikne pojawia się gdzie indziej.
Chciałbym by Formularz pojawiał się tuż pod przyciskiem

1
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var location = this.Location; 
            //musisz dobrze wyliczyć ile pikseli odjąć czy dodać
            location.X = location.X + button2.Location.X - 30;
            location.Y = location.Y + button2.Location.Y + 50;
            new Form2(location).Show();
        }
    }
    public partial class Form2 : Form
    {
        private Point location;
        public Form2(Point location)
        {
            InitializeComponent();
            this.location = location;
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.Location = location;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
0

OK,dzięki,a co powinienem zrobić jeżeli chciałbym aby maksymalnie mógł być wyświetlony tylko 1 Formularz Form2 ?

0

A co ma się stać jeśli ktoś spróbuje otworzyć 2? Ma zniknąć i pojawić się w drugim miejscu czy nic ma nie robić?

0

po prostu chciałbym żeby nie dało się otworzyć drugiego,ten Form2 jest takim moim malutkim MenuStrip które ukończyłem,dodałem zdarzenie MouseLeave które sprawia że po odjechaniu od niego myszą po prostu się zamknie,ale jak sie kliknie miliard razy to miliard razy trzeba pomachać tą myszą :(.Dlatego wolę uniknąć możliwości wielokrotnego wywołania tego Formularza

1

Dodaj może property IsShown i sprawdzaj przed wywołaniem form.Show().

0

Ok działa,bardzo dziękuje tylko ostatnia rzecz,bo zapełniłem ten Formularz przyciskami przez co nie działa moje zdarzenie MouseLeave i formularz nie chce zniknąć,dodałem więc to zdarzenie do wszystkich przycisków formularza ale efekt był kiepski,wiesz może jak mógłbym sprawić aby to zdarzenie było wychwytywane mimo tego że przyciski przykrywają formularz ?

1

Nie wiem jak to zrobić, nie jestem zbyt dobry w WF. Być może zamiast tego wyłączałbym to gdy traci focus.
Znalazłem też taką informacje, nie ma 100% pewności że MouseLeave zostanie zawsze odnotowany tym bardziej jeśli szybciej ruszysz myszką.

1 użytkowników online, w tym zalogowanych: 0, gości: 1