Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Копирование данных строки из dataGridView в richBox или в textBox / 11 сообщений из 11, страница 1 из 1
29.09.2013, 14:16
    #38411025
Star_V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
Копирование данных строки из dataGridView в richBox или в textBox
Всем привет! у меня получилось но мне надо через запетую

private void DataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
{
if (((DataGridView)sender).Focused)
{
foreach (DataGridViewCell item in this.DataGridView.CurrentRow.Cells)
{
this.textBox1.Text += item.Value.ToString();
}
}
}
}
...
Рейтинг: 0 / 0
29.09.2013, 15:20
    #38411059
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
плюсуй запятую еще к текстбоксу
...
Рейтинг: 0 / 0
29.09.2013, 15:24
    #38411062
Star_V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
можно поподробнее
...
Рейтинг: 0 / 0
29.09.2013, 15:28
    #38411064
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
Star_V,

Код: c#
1.
2.
3.
4.
5.
foreach (DataGridViewCell item in this.DataGridView.CurrentRow.Cells)
{
	if (this.textBox1.Text.Length > 0) this.textBox1.Text += ",";
	this.textBox1.Text += item.Value.ToString();
}
...
Рейтинг: 0 / 0
29.09.2013, 15:34
    #38411066
Star_V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
Спасибо!!!
...
Рейтинг: 0 / 0
29.09.2013, 15:49
    #38411076
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
Star_V,
stringbuilder - Впрочем, это уже совсем другая история…(с)
...
Рейтинг: 0 / 0
29.09.2013, 18:00
    #38411136
Star_V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
не поняла

Где-то в степи
можно поподробнее
...
Рейтинг: 0 / 0
29.09.2013, 20:12
    #38411202
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
...
Рейтинг: 0 / 0
29.09.2013, 20:20
    #38411203
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
Где-то в степи,
Позволю резюмировать ссылки

1. Избегайте неявного использования строк

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

Не стоит забывать, что строки иммутабельны. Они не модифицируются после аллокации. Операторы, такие как "+" при объединении строк в действительности создают новый объект String, содержащий конкатенацию строк. Ко всему прочему, это приводит к неявному созданию объекта StringBuilder, который и проводит саму операцию объединения.

Приведем пример:
Код: c#
1.
a = a + b; // a и b - строки



А вот актуальный код, генерируемый компилятором за кулисами:

Код: c#
1.
2.
3.
4.
StringBuilder temp = new StringBuilder(a).
temp.append(b);
a = temp.toString(); // здесь создается новая строка.
                     //  предыдущая “a” теперь стала мусором.


В реальности все еще хуже.
Рассмотрим следующий пример:

Код: c#
1.
2.
3.
String result = foo() + arg;
result += boo();
System.out.println(“result = “ + result);



Здесь мы имеем 3 StringBuilder’а выделенных неявно — по одному на каждую операцию "+" и две дополнительных строки — одна, как результат второго присвоения, другая передается в метод println. В итоге получили 5 дополнительных объектов в тривиальном коде.

Подумайте, что происходит в реальных программах, вроде генерации веб-страницы, работы с XML или чтения текста из файла. Подобный код внутри цикла приведет к появлению сотен или тысяч неявно выделяемых объектов. VM имеет механизмы борьбы с этим, но все имеет цену — и заплатят ее ваши пользователи.

Решение: одним из путей может быть явное создание StringBuilder. В примере ниже достигается тот же результат, но память выделяется только под один StringBuilder и одну строку под конечный результат.

Код: c#
1.
2.
3.
StringBuilder value = new StringBuilder(“result = “);
value.append(foo()).append(arg).append(boo());
System.out.println(value);



Держа в уме, что в подобных случаях строки и StringBuilder’ы выделяются неявно, вы сможете существенно сократить количество мелких аллокаций памяти в часто выполняющемся коде.
...
Рейтинг: 0 / 0
30.09.2013, 11:16
    #38411509
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
Где-то в степи, хорошие ссылки, но одна из них относится к java. Процитированная часть как раз из нее. В C# для кода a + b компилятор сгенерирует вызов String.Concat().
...
Рейтинг: 0 / 0
30.09.2013, 11:47
    #38411557
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных строки из dataGridView в richBox или в textBox
bazile,
хехе углядел, молодец.
при выполнении кода когда когда размер итогового массива для строки известен, компилятор подставляет
конкатенацию, в нутрях просто вычисляется размер для итоговой стоки, выделяется память для этого размера
в виде указателя на новую строку и заполняется массив символов из параметров метода, в диезе немного лучше чем в яве
нет смещения на объект оболочку stringBuilder, экономим 32 байта ( уж не помню точно), то есть память в куче все таки выделяется
под массив символов для итоговой строки.
посмотрим код
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
  public static string Foo(int dd)
        {
             string foostr = "dsdf";
            for (int i = 0; i < 6; i++)
            {
                foostr  =foostr +i.ToString();
            }
            return f;
        }


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

тут как бы вопрос как же ему помочь, - stringBuilder
с перезаписываемым итоговым массивом ( получается при каждой итерации все равно, если строка длинная) будет пересоздаваться массив в куче, но профит очевиден - единица работы для уборщика всего один экземпляр stringBuilder
а сама процедура заполнения итогового массива , что у билдера что при конкатенации - одинаковая.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Копирование данных строки из dataGridView в richBox или в textBox / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]