MessageBox na wierzchu

0

Mógłby mi ktoś pomóc ,bo nie moge znalezc funkcji jak zrobić ,żeby wyskakujacy w programie message box był na wierzchu (w sensie wyskakiwal bez wzgledu ile mam otwartch okienek).

Robie jakis banalny program (Windows Form) ,który po określonym czasie wyswietli mi Message Boxa z przypomnieniem.

BTW. Jeszcze tylko z ciekawosci spytam ,czy latwo zrobić ,żeby okienko po wcisnieciu _ minimalizowało się do traya ?

0
lamus napisał(a)

żeby wyskakujacy w programie message box był na wierzchu (w sensie wyskakiwal bez wzgledu ile mam otwartch okienek).

Jesli MessageBox.Show() nie wyskakuje Ci ponad wszystkie okienka zawsze mozesz zrobic nowy formularz, ktory bedzie robil za takiego MessageBox'a. Nadaj mu tylko wlasciwosc TopMost na true;

lamus napisał(a)

BTW. Jeszcze tylko z ciekawosci spytam ,czy latwo zrobić ,żeby okienko po wcisnieciu _ minimalizowało się do traya ?

Dodaj NotifyIcon do formularza. Dodaj zdarzenie Click dla tej kontrolki i umiesc nastepujacy kod:

private void notifyIcon1_Click(object sender, EventArgs e)
        {
            this.Show();
            notifyIcon1.Visible = false;
        }

Dodaj zdarzenie Resize dla formularza i umiesc nastepujacy kod:

 private void Form1_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            { 
                this.Hide(); 
                notifyIcon1.Visible = true; 
            }
        }

Do NotifyIcon mozesz dodac jeszcze ContexMenu z dodatkowymi opcjami.


0

dzieki wielkie :) Myslalem ze do tego messageboxa jest taka opcja ,ale w sumie zrobienie drugiego okna duzym problemem nie jest.

0

Okej :) Zrobiłem tak jak mowiles czyli jeszcze jedna forme i wszystko niby ok, ale zauwazylem ze wlasciwie nie mam pojecia w jaki sposob obie formy moga wplywac na siebie. Wiem ze to podstawowa rzecz, ale jestem jeszcze troche zielony jesli chodzi o posługiwanie sie klasami :)

Chodzi mi o to , jak zrobic zeby np klikajac w button w 1 formie zamykala sie druga forma. Próbowałem tworzyc rozmaite obiekty, modyfikowac pola, ale one zawsze byly widoczne tylko w 1 klasie a w drugiej nie. Jak najprosciej "porozumiewywać się" między klasami/formami ??

0
lamus napisał(a)

Chodzi mi o to , jak zrobic zeby np klikajac w button w 1 formie zamykala sie druga forma. Próbowałem tworzyc rozmaite obiekty, modyfikowac pola, ale one zawsze byly widoczne tylko w 1 klasie a w drugiej nie. Jak najprosciej "porozumiewywać się" między klasami/formami ??

Temat byl juz wiele razy walkowany na forum. Nawet niedawno byly dwa tematy o tym. Poszukaj.

0

szukalem dlugo i sporo znalazłem ,ale zaden ze sposobow nie chce działać :/ Moze podam najwazniejsze fragmenty kodu i mi ktoś powie gdzie robie blad i ewentualnie co powinienem poprawić...

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

        public int a;
        public Form2 form2 = new Form2();




        private void timer1_Tick(object sender, EventArgs e)
        {
           
            progressBar1.PerformStep();
            if (progressBar1.Value == progressBar1.Maximum)
            {
                timer1.Stop();


                form2 = new Form2();     // ta
                form2.Show();
                form2.form1 = this;     // i ta linijka sciagniete z jednego z postow

                if (a==5)
                Close();
                
                          
            }
            
}
}
 public partial class Form2 : Form
    {
        public Form1 form1;

        public Form2()
        {
            InitializeComponent();
         
           

        }

        private void button1_Click(object sender, EventArgs e)
        {

             form1.a = 5;   
            ((Form1)this.form1).a = 5;       // ponoc to samo co wyzej
        
    MessageBox.Show("koniect");
               
         
            Close();
        }
    }

Po załadadowaniu drugiego okienka klikam w button i w message box i zamyka mi sie 2 forma ,a 1 musze zamykać ręcznie więc pewnie wartość a nie została zmieniona.

0

Moze zacznij od prostrzych rzeczy zamiast rzucac sie na gleboka wode z tymi timerami i progressbarami?

0

prostsze rzeczy mam juz za soba. Zrobilem taki przypominacz w ktorym ustawiam sobie za ile minut ma mi wyskoczyc okno z przypomnieniem i wszystko dobrze dziala, ale chcialbym zeby 1 (glowne) okno zamykalo mi sie po wcisnieciu przycisku w drugim. Chcialem to zrobic za pomoca ifa , close(), i zmiennej a, ale nie moge zmienic jej wartosci w drugiej klasie.

0
lamus napisał(a)

prostsze rzeczy mam juz za soba.

To moze nie dosc dokladnie je przesledziles? Powinienes wiedziec jak sobie poradzic z tym problemem. I w samym kodzie jest troche "nabalaganione".

lamus napisał(a)

ale chcialbym zeby 1 (glowne) okno zamykalo mi sie po wcisnieciu przycisku w drugim.

A nie prosciej jest zrobic tak:

public partial class Form2 : Form
    {
        public Form form1;

        ...

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

?

0
Mendoza napisał(a)

To moze nie dosc dokladnie je przesledziles? Powinienes wiedziec jak sobie poradzic z tym problemem. I w samym kodzie jest troche "nabalaganione".

Wlasnie w tym rzecz ,ze (troche to dziwnie zabrzmi) do tej pory operowałem zawsze na 1 formie i ten problem sie nie pojawiał. Wstawilem tylko fragment kodu i myslalem ze jest raczej "porządek" :]

A jesli chodzi o form1.Close(); to rzeczywiscie rozwiązuje problem. Próbowałem tego wczesniej zanim dałem form2.form1 = this; i nie działało ,a potem zapomniałem.

Nadal jednak nie wiem jak zmieniac wartosci pól między klasami, ale to juz chyba sam do tego dojde. Tak czy siak dzieki za pomoc.

0
lamus napisał(a)

Nadal jednak nie wiem jak zmieniac wartosci pól między klasami, ale to juz chyba sam do tego dojde. Tak czy siak dzieki za pomoc.

Podobnie jak w innym temacie. Pole, kontrolkę, którą chcesz modyfikować musisz ustawić jako publiczną

0

Witam.

Spróbuj przed otwarciem nowego okna pobrać wartość Handle.
Następnie aby zamknąć okno użyj np:
Form2 NoweOkno = (Form2)FromHandle(uchwyt);
...i teraz możesz już operować na tym oknie...
NoweOkno.Close();

Pozdrawiam.

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