Specifi c раскраска строк в выпуске Datagrid - PullRequest
0 голосов
/ 19 июня 2020

То, что я пытаюсь здесь, читается из файла, выбранного в ComboBox, затем l oop содержимое файла, добавляя его в сетку данных, это отлично работает:

        private void ComboBoxLoadPLFFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            try {
                var eachLine = File.ReadAllLines(@"PotentialLinksFound\" + ComboBoxLoadPLFFiles.Text);
                DataGridViewLinks.Rows.Clear();

                foreach (var row in eachLine)
                {
                    // Check for forum accounts successfully created ...
                    string[] cut = row.Split('|');
                    if (Helpers.CheckForAccountsCreated(cut[0]) == true)
                    {
                        //Helpers.ReturnMessage("Found -> " + cut[0]);
                        DataGridViewLinks.Rows.Add(cut[0], ComboBoxLoadPLFFiles.Text.Replace(".plf", ""), cut[1], "", cut[2]);
                        DataGridViewLinks.DefaultCellStyle.BackColor = Color.Aqua;
                    }
                    else 
                    {
                        DataGridViewLinks.Rows.Add(cut[0], ComboBoxLoadPLFFiles.Text.Replace(".plf", ""), cut[1], "", cut[2]);
                    }

                }
                UpdateLinksCount();
            }
            catch (Exception ex)
            {
                Helpers.DebugLogging("[" + DateTime.Now + "]-[" + ex.ToString() + "]");
            }
        }

My требуется изменить цвет ряда определенных строк в зависимости от того, возвращает ли Helpers.CheckForAccountsCreated(cut[0]) == true истину (logi c в порядке, и это работает так, как должно), но вся сетка превращается в Aqua вместо определенной c строки, я мог подождать, пока сетка данных не будет заполнена, чтобы выполнить foreach, но я не могу это сделать, когда сетка заполняется? любые советы будут оценены Я, возможно, что-то упускаю из виду.

1 Ответ

1 голос
/ 19 июня 2020

Пробовали ли вы делать что-то вроде этого:

// get the row that you want to change color
row.DefaultCellStyle.BackColor = Color.Aqua;

// this line here changes all the rows to Aqua
//DataGridViewLinks.DefaultCellStyle.BackColor = Color.Aqua;

Когда вы это делаете:

DataGridViewLinks.Rows.Add(cut[0], ComboBoxLoadPLFFiles.Text.Replace(".plf", ""), cut[1], "", cut[2]);

Rows.Add () возвращает индекс самой новой строки.

Мы можем получить этот индекс, выполнив:

int ind = DataGridViewLinks.Rows.Add(cut[0], ComboBoxLoadPLFFiles.Text.Replace(".plf", ""), cut[1], "", cut[2]);

Теперь мы можем изменить цвет этой строки следующим образом:

DataGridViewLinks.Rows[ind].DefaultCellStyle.BackColor = Color.Aqua;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...