powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / картинку на форму
3 сообщений из 3, страница 1 из 1
картинку на форму
    #34395261
serghey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите с вопросом. Надо поместить на форму ровно столько picturebox с загруженными в них сканов, сколько как таковых имеются в таблице (предварительно хранимкой отбираю необходимые сканы)
Вот событийная процедура:

private void dg_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
//создание формы-рисунка
//загрузка рисунков в ds(набор данных)
//создание кнопок навигации, сканирования
{
Form ris = new Form();
ris.Text = "копии документа "+type_dg.CurrentRow.Cells[1].Value.ToString()+"с номером "+dg.CurrentRow.Cells[1].Value.ToString();
//PictureBox pb = new PictureBox();
SqlConnection sqlcon = new SqlConnection(source);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
sqlcon.Open();
SqlCommand sqlcom = new SqlCommand("s_ris", sqlcon);
sqlcom.CommandType = CommandType.StoredProcedure;
sqlcom.Parameters.Add("@number_doc", SqlDbType.VarChar).Value = dg.CurrentRow.Cells[1].Value.ToString();
sqlcom.UpdatedRowSource = UpdateRowSource.None;
da.SelectCommand = sqlcom;
da.Fill(ds, "s_ris");


PictureBox[] pb = new PictureBox[ds.Tables[0].Rows.Count];

if (ds.Tables[0].Rows.Count > 0)//проверка на наличие строк в таблице с рисунками
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{

object ImageFromDataSet = ds.Tables[0].Rows["ris"];

byte[] b = (byte[])ImageFromDataSet;

if (b.Length > 0)
{
System.IO.MemoryStream str = new System.IO.MemoryStream(b, true);
str.Write(b, 0, b.Length);
pb.Image = (Bitmap)Image.FromStream(str);
}

//MessageBox.Show(ds.Tables[0].Rows.Count.ToString( ));
sqlcon.Close();
ris.Controls.Add(pb);
}
}
else MessageBox.Show("нет данных в таблице");

bt.Size = new System.Drawing.Size(120, 40);
bt.Location = new System.Drawing.Point(200, 200);
bt.Text = "сканировать";
ris.Controls.Add(bt);
bt.Click += new System.EventHandler(bt_Click);
ris.ShowDialog();
}
когда загружал только одну картинку, то все работает превосходно, но попробовал сделать массив picturebox и выдает ошибку

Object reference not set to an instance of an object.

поясню:
bt-кнопка
ris - форма
pb- picturebox

может грузить по одной на форму, а кнопками навигации грузить другие?
...
Рейтинг: 0 / 0
картинку на форму
    #34396395
HitchHicker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка где-то в коде, происходит попытка обратиться к объекту, которого не существует, проверь код
...
Рейтинг: 0 / 0
картинку на форму
    #34449824
serghey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решил этот вопрос при помощи PictureBox
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / картинку на форму
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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