Member 13688117 Ответов: 1

Изменяемый размер datagridview в C#


Привет,

У меня есть сценарий, в котором мне нужно создать таблицу, содержащую только 1 строку. Я не должен использовать базу данных для этого. У меня есть длинная строка байтов, которую я должен подстроить и поместить в каждый столбец этой строки.Эта таблица должна быть изменяемой по длине.
То есть его столбцы должны увеличиваться или уменьшаться в зависимости от моего ввода. У кого-нибудь есть какие-нибудь идеи?

Что я уже пробовал:

Я предпочитал использовать представление datagrid без базы данных. И мой столбец данных, и его заголовок должны варьироваться в зависимости от длины моего ввода.
DataTable dt1 = new DataTable();
//i add columns likethis
dt1.Columns.AddRange(new DataColumn[4]{new DataColumn("byte1",typeof(string)),new DataColumn("byte2",typeof(string)),new DataColumn("byte3",typeof(string)),new DataColumn("byte4",typeof(string))});

int j=0;
byte0=hexstring.Substring(j,2);
.
.
.
//after i create columns i add data to rows like the following
dt1.Rows.Add(byte0,byte1,byte2,byte3);


Эти значения внутри Add продолжают меняться в зависимости от моего ввода, скажем, у меня есть 10 байт, он увеличивается до byte9. Как я могу сделать i generic? Есть ли какое-либо решение, кроме представления datagrid? Любая помощь будет оценена по достоинству.

1 Ответов

Рейтинг:
4

Maciej Los

Я не уверен, что хорошо вас понимаю, но ... ..

Взгляните на нижеприведенный метод:

public string[] ToHexString(string input)
{
	return input.Select(c=>((int)c).ToString("X2")).ToArray();
}

Он преобразует строку в массив "шестнадцатеричного представления" каждого символа в строке. Теперь вы можете просто создать DataTable. Видеть:
string s = "not very long string";
DataTable dt = new DataTable();
string[] hexstring = ToHexString(s);
for(int i=0; i<hexstring.Length; i++)
{
	dt.Columns.Add(new DataColumn(string.Format("byte{0}", i), typeof(string)));
}
dt.Rows.Add(hexstring);

//bind data to DataGridView
dataGridView1.Datasource = dt;


Удачи вам!


Member 13688117

Большое вам спасибо, что он работает!!!

Maciej Los

Рад, что смог помочь!

Maciej Los

Если это работает, почему вы не отметили мой ответ как решение?