Problem z MessageBox

0

mam sobie taki fragmencik kodu:

DialogResult = MessageBox.Show("Czy na pewno chcesz dodać nowego pracownika", "Uwaga", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (DialogResult == DialogResult.Yes)
                {
                    if (comboBoxUprawnienia.Text == comboBoxUprawnienia.Items[0].ToString())
                    {
                        cmd.CommandText = string.Format("USE Faktura INSERT INTO dbo.Pracownicy(imie,nazwisko,login,haslo,uprawnienia) VALUES('{0}','{1}','{2}','{3}',0)", textBoxImie.Text, textBoxNazwisko.Text, textBoxLogin.Text, textBoxHaslo.Text);
                        MessageBox.Show("Dodano nowego administratora", "Nowy Administrator", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        cmd.CommandText = string.Format("USE Faktura INSERT INTO dbo.Pracownicy(imie,nazwisko,login,haslo,uprawnienia) VALUES('{0}','{1}','{2}','{3}',1)", textBoxImie.Text, textBoxNazwisko.Text, textBoxLogin.Text, textBoxHaslo.Text, 1);
                        MessageBox.Show("Dodano nowego sprzedawcę do bazy", "Nowy Sprzedawca", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }

i teraz mam pytanie dlaczego jak wciskam "NIE" to zamyka mi się forma? i jak to rozwiązać?



// taki duperel - w aplikacjach komercyjnych robić błędy gramatyczne to co najmniej obciach - Ł
// to nie jest aplikacja komercyjna tylko mój programik na którym się uczę C# NET a po za tym polonistą  ja nigdy nie byłem więc sorry  [green]
0

A gdzie znajduje sie ten kod? I co znajduje sie po klamrze ifa z DialogResult == DialogResult.Yes?
Bo powyzszy kod nie ma nic do zamykania ani do klikania NIE.

0

Dobra inaczej mam przycisk "Dodaj" na formie który przy spełnionych warunkach wywołuje powyższy kod. linijka:

DialogResult = MessageBox.Show("Czy napewno chcesz dodać nowego pracownika", "Uwaga", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (DialogResult == DialogResult.Yes)
{
//...
}

Pyta sie czy "Czy na pewno chcesz dodać nowego pracownika" jak wciskam "YES" to leci dalej (to mi działa)
teraz jak chcę wcisnąć "NO" (nie oprogramowałem go bo myślałem że po prostu nic nie zrobi jak jak sie go wciśnie) ale jak się okazuje po wciśnięciu "NO" zamykana jest forma. Jak mam oprogramować

if (DialogResult == DialogResult.No) aby mi nie zamykał formy.

I jak nie ma nic do klikania przecież MessageBoxButtons.YesNo wyświetla 2 przyciski "YES" i "NO". Yes jest oprogramowane. A "NO" nie jest bo po prostu ma nic nie robić ;-) Problem w tym że samo bez mojego pozwolenia zamyka mi Formę. :/

0

Forma sama sie nie zamyka, a juz na pewno nie robi tego MessageBox. Stad moje pytanie o kontekst. Pokaz kod ponizej i wokol tego co dales bo z fusow nic wywrozyc sie nie da.

0
        private void btnDodajPracownika_Click(object sender, EventArgs e)
        {
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = string.Format("USE Faktura SELECT* FROM dbo.Pracownicy WHERE imie = '{0}' and nazwisko = '{1}' and login = '{2}'",textBoxImie.Text, textBoxNazwisko.Text, textBoxLogin.Text);
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                MessageBox.Show("Podany pracownik istnieje\nPopraw dane i spróbuj ponownie", "Podany użytkownik istnieje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                DialogResult = MessageBox.Show("Czy napewno chcesz dodać nowego pracownika", "Uwaga", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (DialogResult == DialogResult.Yes)
                {
                    if (comboBoxUprawnienia.Text == comboBoxUprawnienia.Items[0].ToString())
                    {
                        cmd.CommandText = string.Format("USE Faktura INSERT INTO dbo.Pracownicy(imie,nazwisko,login,haslo,uprawnienia) VALUES('{0}','{1}','{2}','{3}',0)", textBoxImie.Text, textBoxNazwisko.Text, textBoxLogin.Text, textBoxHaslo.Text);
                        MessageBox.Show("Dodano nowego administratora", "Nowy Administrator", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        cmd.CommandText = string.Format("USE Faktura INSERT INTO dbo.Pracownicy(imie,nazwisko,login,haslo,uprawnienia) VALUES('{0}','{1}','{2}','{3}',1)", textBoxImie.Text, textBoxNazwisko.Text, textBoxLogin.Text, textBoxHaslo.Text, 1);
                        MessageBox.Show("Dodano nowego sprzedawcę do bazy", "Nowy Sprzedawca", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }

            }
            dr.Close();
            conn.Close();
        }

To jest dokładnie cały kod obsługujący przycisk

0

OK wiem jak już się z tym uporać. :d więc napiszę jakby ktoś miał podobny problem. Wystarczyło zamienić fragment

DialogResult = MessageBox.Show("Czy napewno chcesz dodać nowego pracownika", "Uwaga", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (DialogResult == DialogResult.Yes) 

na

if( MessageBox.Show("Czy napewno chcesz dodać nowego pracownika", "Uwaga", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)==DialogResult.Yes)

Czemu poprzednia wersja nie działała nie wiem do tej pory :/ ale teraz jest OK. Forma sie nie zamyka. Ta pierwsza wersja jest z przykładu na MSDN a tam nic nie pisało o takiej właściwości tego :-D

0

Zwroc uwage na to czego uzywasz. DialogResult to wlasciwosc okna, nie Twoja zmienna:
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.dialogresult(VS.80).aspx

0

Że to jest właściwość okna to ja wyczytałem tylko, że to dziadostwo formę zamyka to już tego nie :| Swoją drogą to trochę głupie aby przy samym porównaniu, ta sama z siebie ci formę zamykała :-)

0

A czego sie spodziewales? I co w tym dziwnego, ze przy podstawieniu (bo porownanie to co innego) wykonuje sie jakas akcja? Slyszales o wlasciwosciach?

Ustawiasz rezultat okna jako NO - co w przypadku okna znaczy zwykle zamkniecie bez akcji + wywolanie odpowiednich zdarzen zamykania. Stad taki efekt.

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