Nie chce usunąć wpisów z dataGridView

0

Witam. Mam problem z usunięciem wszystkich wpisów z dataGridView. Otóż jeden wpis zawsze zostanie, nie wiem czemu. Robię to w ten sposób:

DataGridViewRowCollection rows = dataGridView1.Rows;
foreach (DataGridViewRow row in rows)
            {
                rows.Remove(row);
            }

Próbowałem też tak:

int row_count = dataGridView1.RowCount;
            for (int i = 1; i <= row_count; i++ )
            {
                dataGridView1.Rows.RemoveAt(i);
            }

Ale zawsze ten jeden wpis zostaje i niszczy mój misterny plan.
Dzięki za pomoc :)

2

foreach w ogóle nie służy do modyfikowania kolekcji.
A forem usuwa się od końca, a nie od początku.

3

A może po prostu tak:

dataGridView1.Rows.Clear(); 
0

Działa, dzięki.
Wiesz może jeszcze dlaczego notifyIcon po ustawieniu właściwości:

notifyIcon1.Visible = false;

nie znika z paska zadań?

0

Nie wiem może pokaż kod.

0

Cały kod formy:

namespace Zgloszenia
{
    public partial class Form2 : Form
    {
        public static Form2 refOknoZgloszenia;
        public static int najwyzsze_id = 0;
        public Form2()
        {
            InitializeComponent();
            refOknoZgloszenia = this;
            timer1_Tick(null, null);
            label1.Text = "Zalogowany jako: " + User.login;
            label2.Text = "Pilnujesz porządku od: 0 sekund";
            if (User.ilosc_zatwierdzonych_zgloszen == 0)
                label3.Text = "Nie odpowiedziales jeszcze na zadne zgloszenie :)";
            else AktualizujLiczbeZgloszen();
        }

        //zamykanie okna glownego po wyjsciu z aplikacji;
        private void zamknijToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            int id = 0;
            DBConnect zgloszenia = new DBConnect();
            String[][] lista_zgloszen = zgloszenia.PobierzZgloszenia();

            dataGridView1.Rows.Clear();

            String[] zgloszenie = new String[6];
            for (int i = 0; i < lista_zgloszen.Length; i++)
            {
                //if (IsNullOrEmpty(lista_zgloszen[i]))
                if (string.IsNullOrEmpty(lista_zgloszen[i][0]))
                    break;
                zgloszenie[0] = lista_zgloszen[i][0];
                zgloszenie[1] = lista_zgloszen[i][1];
                zgloszenie[2] = lista_zgloszen[i][2];
                zgloszenie[3] = lista_zgloszen[i][3];
                zgloszenie[4] = lista_zgloszen[i][4];
                zgloszenie[5] = lista_zgloszen[i][5];

                dataGridView1.Rows.Add(zgloszenie);
                dataGridView1.Rows[i].Cells[6].Value = "Zatwierdź";

                id = Int32.Parse(zgloszenie[0]);
            }
            if(sender != null)
            {
                if(najwyzsze_id < id)
                {
                    notifyIcon1.BalloonTipText = "Pojawilo sie nowe zgloszenie";
                    notifyIcon1.ShowBalloonTip(20 * 1000);
                    (new System.Media.SoundPlayer("nowe_zgloszenie.wav")).Play();

                    najwyzsze_id = id;
                }
            }
            else if(id > 0)
            {
                notifyIcon1.BalloonTipText = "Nowe zgloszenia oczekuja na rozpatrzenie";
                notifyIcon1.ShowBalloonTip(10 * 1000);
                (new System.Media.SoundPlayer("nowe_zgloszenie.wav")).Play();

                najwyzsze_id = id;
            }
            
            //dataGridView1.Refresh();
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            User.pilnuje_porzadku_od += 1;
            label2.Text = "Pilnujesz porządku od: " + User.pilnuje_porzadku_od + " sekund";
        }

        private void otwórzToolStripMenuItem_Click(object sender, EventArgs e)
        {
            refOknoZgloszenia.Show();
        }

        private void zamknijToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            notifyIcon1.Visible = false;
            Application.Exit();
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing) //lub dowolna inna przyczyna
                e.Cancel = true;
            notifyIcon1.Visible = true;
            Hide();
            //notifyIcon1.BalloonTipText = "Nadal czuwam :)";
            //notifyIcon1.ShowBalloonTip(10 * 1000);
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            var senderGrid = (DataGridView)sender;

            if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
                e.RowIndex >= 0)
            {
                DialogResult wybor = new DialogResult();
                wybor = MessageBox.Show("Zatwierdzic zgloszenie?", "Zatwierdzanie zgłoszeń", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                if (wybor == DialogResult.Yes)
                {
                    DBConnect pol = new DBConnect();
                    string id = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
                    if(pol.ZatwierdzZgloszenie(id))
                    {
                        notifyIcon1.BalloonTipText = "Zgłoszenie zostało zatwierdzone :)";
                        notifyIcon1.ShowBalloonTip(10*1000);

                        DBConnect roz = new DBConnect();
                        roz.DodajZatwierdzenieZgloszenia(User.id);
                    }
                }
            }
        }

        private void notifyIcon1_MouseMove(object sender, MouseEventArgs e)
        {
            notifyIcon1.Text = "System zgłoszeń v1.0 by CSnajper\nZalogowany jako: " + User.login;
        }

        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            refOknoZgloszenia.Show();
        }

        public void AktualizujLiczbeZgloszen()
        {
            label3.Text = "W sumie odpowiedziałeś na " + User.ilosc_zatwierdzonych_zgloszen + " zgłoszeń (" + User.ilosc_zatwierdzonych_zgloszen_w_sesji + " w tej sesji)";
        }
        
    }
}
1

Wszystko masz w metodzie:

       private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing) //lub dowolna inna przyczyna
                e.Cancel = true;
            notifyIcon1.Visible = true;
            Hide();
            //notifyIcon1.BalloonTipText = "Nadal czuwam :)";
            //notifyIcon1.ShowBalloonTip(10 * 1000);
        } 

Jeśli zamkniesz forme za pomocą krzyżyka zamykanie zostanie anulowane a forma jedynie ukryta, a ikona dalej widoczna.
Do zamknięcia formy musisz użyć zdarzenia, które ma przypisaną metodę:

        private void zamknijToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            notifyIcon1.Visible = false;
            Application.Exit();
        } 

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