Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2015, 22:41   #1
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию Добавить строчку в таблицу

Путаюсь добавить строчку в готовую таблицу.
Код:
    tablica.ColumnCount = 5;
            tablica.Columns[0].Name = "name";
            tablica.Columns[1].Name = "name1";
            tablica.Columns[2].Name = "name2";
            tablica.Columns[3].Name = "name3";
            tablica.Columns[4].Name = "name4";
            string[] row = new string[] { "1", "1", "1", "Product 1", "1000" };
            tablica.Rows.Add(row);
При попытке добавить строчку, ошибка.
Код HTML:
Первый этап обработки исключения типа "System.InvalidOperationException" в System.Windows.Forms.dll
Программа "[4992] test.vshost.exe" завершилась с кодом -532459699 (0xe0434f4d).
Predator199 вне форума Ответить с цитированием
Старый 12.03.2015, 08:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Криминала не вижу...
Отладку делал? На какой строке падает? Может этот код вовсе ни при чем.
И чему у тебя tablica равна? Может она nil?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.03.2015, 08:39   #3
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Если я правильно понимаю, в дизайне прописано так

Код:
private void InitializeComponent()
{

   this.tablica = new System.Windows.Forms.DataGridView();

   // 
   // tablica
   // 
   this.tablica.AllowDrop = true;
   this.tablica.AllowUserToAddRows = false;
   this.tablica.AllowUserToDeleteRows = false;
   this.tablica.AllowUserToResizeRows = false;
   this.tablica.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
   this.tablica.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
   this.name,
   this.name1,
   this.name2,
   this.name3,
   this.name4});
   this.tablica.Location = new System.Drawing.Point(7, 533);
   this.tablica.MultiSelect = false;
   this.tablica.Name = "tablica";
   this.tablica.RowHeadersWidth = 20;
   this.tablica.RowTemplate.Height = 18;
   this.tablica.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
   this.tablica.Size = new System.Drawing.Size(447, 56);
   this.tablica.TabIndex = 0;


   // 
   // name
   // 
   this.security_name.DataPropertyName = "name";
   this.security_name.HeaderText = "Имя";
   this.security_name.MinimumWidth = 80;
   this.security_name.Name = "name";
   this.security_name.ReadOnly = true;
   this.security_name.Width = 50;

   ...
   ...
   ...
   ...

}
private System.Windows.Forms.DataGridView tablica;
Таблица по умолчанию пуста... Необходимо добавить строчку...
Predator199 вне форума Ответить с цитированием
Старый 12.03.2015, 09:24   #4
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Достаточно было просто
tablica.Rows.Add("d","d","d","d","d ");

Такой вот вопрос. Как правильно собрать массив, допустим необходимо добавить сразу 2 строчки.

Код:
row = new string[] { "1", "1", "1", "Product 1", "1000"};
row = new string[] { "1", "1", "1", "Product 1", "1000"};

tablica.Rows.Add(row);
Код:
   
row = new string[] { "1", "1", "1", "Product 1", "1000"};
row = { "1", "1", "1", "Product 1", "1000"};
Как добавить еще один массив к уже имеющемуся? Как не пытался, каждый раз ошибки...


Код:
            string[] arr2Lines;
            arr2Lines = new string[] { "1", "1", "1", "Product 1", "1000" };
            string[] arr1Line = { "12", "21", "21", "P2oduct 1", "10200" };

            tablica.Rows.Add(arr1Line);
Ничего не получается

Последний раз редактировалось Predator199; 12.03.2015 в 09:55.
Predator199 вне форума Ответить с цитированием
Старый 12.03.2015, 10:35   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

две строчки это два вызова Add
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.03.2015, 11:28   #6
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Дело в том, что мне необходимо сперва собрать массив , а уже потом добавить все то, что насобирал. Иначе я не смогу добавить из другого потока...
Predator199 вне форума Ответить с цитированием
Старый 12.03.2015, 11:32   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Собирайте строки в какой-нибудь список (List<string[]>, List<MyRow>, ...), а потом в цикле добавляйте.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.03.2015, 11:59   #8
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Код:
string[] row = null;

// поток
private System.Threading.Thread work;

// событие вызываем из соседнего потока
public event EventHandler ev;

public Form1()
{

     InitializeComponent();

     // подписка на событие
     ev += Form1Load;
}


void Form1Load(object sender, EventArgs e)
{
     this.Invoke(new Action(() =>
      {
            if (row) // необходимо конвертировать в bool
            {
                foreach (var WL in row)
               {
                    tablica.Rows.Add("d", "d", "d", "d", "d ");
               }
           }
      }));
}

void func()
{

   while (true)
  {
        // на этой строчке необходимо каждый раз чистить row
        foreach (.....)
       {
            string[] row = {"s"};
        }

         System.Threading.Thread.Sleep(10000);
         if (ev != null) ev(this, EventArgs.Empty);
  }
}

void Click(object sender, EventArgs e){
     work = new System.Threading.Thread(func);
     work.IsBackground = true;
     work.Start();
}
Я весь мозг уже вынес, тут не так, там не этак, тут не так, это не правильно...
Строчки прокомментировал, как это все проделать?
Predator199 вне форума Ответить с цитированием
Старый 12.03.2015, 12:10   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну string[] это и правда не bool. Что тут выносить мозг-то?
Если вы хотите проверить null ли оно, то это и проверяйте.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.03.2015, 12:31   #10
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну string[] это и правда не bool. Что тут выносить мозг-то?
Если вы хотите проверить null ли оно, то это и проверяйте.
Convert. .... ? Что тут прописывать, что выбрать из 1 000 000 001 вариантов? Как очистить переменную?
Predator199 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить в таблицу Наталья Баева SQL, базы данных 0 15.02.2014 21:19
Добавить новую строчку ListBox felicita_091 C++ Builder 1 01.05.2013 13:24
Добавить только одну строчку, а не все hozey Общие вопросы Delphi 3 14.05.2010 18:12
как в мемо добавить в текущую строчку символ из переменной Kukkk Общие вопросы Delphi 6 01.09.2007 16:48