Здравствуйте! Сегодня: Вс, 16 Июн 2019, Ваш IP: 34.207.78.157 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Список форумов Kbyte.Ru - - Общие вопросы программирования
+ Создать новую тему Страница: 1
Тема: Связать textbox с datagridview · +  +  дата добавления: 12.03.2015 / 11:02
Автор темы:
neych
neych
тем: 2 / ответов: 6 / благодарностей: 0 / репутация: 0
ответов: 6
создал(а) тем: 2


Как сделать, чтоб когда в вожу в текстбокс любое значение к примеру 5, в датагрид появляется таблица с количеством столбцов равным этому значению, в данном случае это 5
Технологии: C#
 
Ответ # 1 # · +  +  дата добавления: 12.03.2015 / 13:21
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Добавить текстовому полю обработчик события KeyPress и TextChanged:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
  // проверяем, что введеный символ является числом
  if (!Char.IsDigit(e.KeyChar))
  {
    // если не число, то отменяем ввод символа в поле
    e.Handled = true;
  }
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
  // удаляем все колонки
  dataGridView1.Columns.Clear();

  // если поле пустое, выходим
  if (String.IsNullOrEmpty(textBox1.Text)) { return; }

  // получаем необходимое число колонок
  int max = Convert.ToInt32(textBox1.Text);

  // добавляем колонки
  for (int i = 1; i <= max; i++)
  {
    dataGridView1.Columns.Add(String.Format("Column{0}", i), String.Format("Колонка #{0}", i));
  }
}
 
Ответ # 2 # · +  +  дата добавления: 13.03.2015 / 20:35
Автор ответа:
neych
neych
тем: 2 / ответов: 6 / благодарностей: 0 / репутация: 0
ответов: 6
создал(а) тем: 2


а если не трудно, можно тоже самое тока для строк
 
Ответ # 3 # · +  +  дата добавления: 13.03.2015 / 20:52
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Для строк нужно заменить Columns на Rows:
for (int i = 1; i <= max; i++)
{
  dataGridView1.Rows.Add(String.Format("Строка #{0}", i)); // через запятую можно указывать значение для каждой колонке
}
 
Ответ # 4 # · +  +  дата добавления: 13.03.2015 / 22:39
Автор ответа:
neych
neych
тем: 2 / ответов: 6 / благодарностей: 0 / репутация: 0
ответов: 6
создал(а) тем: 2


Спасибо ,и если можно еще в одном помогите: надо чтоб при нажатии кнопки удалялись столбцы, но только чтоб первый самый не мог удалиться, а то я удаляю их до последнего и прога вылетает
 
Ответ # 5 # · +  +  дата добавления: 14.03.2015 / 10:21
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


надо чтоб при нажатии кнопки удалялись столбцы, но только чтоб первый самый не мог удалиться, а то я удаляю их до последнего и прога вылетает
Без кода сложно сказать, в чем ошибка.

Скорее всего индексы неправильные. Отсчет начинается с нуля. Первый элемент - имеет индекс ноль.
Значение числа (количество) элементов считается с одного и индекс последнего элемента всегда должен быть меньше на один.

for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
// dataGridView1.Rows[i]
 
Ответ # 6 # · +  +  дата добавления: 14.03.2015 / 16:38
Автор ответа:
neych
neych
тем: 2 / ответов: 6 / благодарностей: 0 / репутация: 0
ответов: 6
создал(а) тем: 2


dataGridView1.Columns.RemoveAt(dataGridView1.Columns.Count - 1);
 
Ответ # 7 # · +  +  дата добавления: 14.03.2015 / 16:43
Автор ответа:
neych
neych
тем: 2 / ответов: 6 / благодарностей: 0 / репутация: 0
ответов: 6
создал(а) тем: 2



надо чтоб удалялись до столбца "X", а он не мог удалиться
 
Ответ # 8 # · +  +  дата добавления: 14.03.2015 / 17:11
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Циклом нужно удалять:
int max = 1; // число с 1
while (dataGridView1.Columns.Count > max)
{
  dataGridView1.Columns.RemoveAt(dataGridView1.Columns.Count - 1);
}
 
Ответ # 9 # · +  +  дата добавления: 14.03.2015 / 20:01
Автор ответа:
neych
neych
тем: 2 / ответов: 6 / благодарностей: 0 / репутация: 0
ответов: 6
создал(а) тем: 2


СПАСИБО БОЛЬШОЕ очень помогли
 
Ответ # 10 # · +  +  дата добавления: 15.03.2015 / 00:13
Автор ответа:
neych
neych
тем: 2 / ответов: 6 / благодарностей: 0 / репутация: 0
ответов: 6
создал(а) тем: 2


У меня косяк опять, вылетает когда удаляю строки
 dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1);
раньше работал
 
Ответ # 11 # · +  +  дата добавления: 15.03.2015 / 12:13
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


И какая именно ошибка?

Единственное, что могу предположить, это ситуацию, когда строк нет и dataGridView1.Rows.Count возвращает ноль, соответственно - ноль минус один будет минус один, и это приведет к исключению.

Если нужно удалить все объекты коллекции, то проще использовать метод Clear.
dataGridView1.Rows.Clear();
 
Страница: 1 + Создать новую тему