Datagridview включает изображение в столбец таблицы

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

В настоящее время у меня есть datagridview в пустой форме, которая заполняется, когда пользователь вставляет данные в текстовые поля, поле со списком и средство выбора даты и времени, используя следующий код:

Public Class Add_Row_To_Datagridview_Using_Textboxes
Dim table As New DataTable("table")
Private Sub Add_Row_To_Datagridview_Using_Textboxes_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' header for 
    table.Columns.Add("Id", Type.GetType("System.Int32"))
    table.Columns.Add("First Name", Type.GetType("System.String"))
    table.Columns.Add("Last Name", Type.GetType("System.String"))
    table.Columns.Add("Age", Type.GetType("System.Int32"))
    table.Columns.Add("Gender", Type.GetType("System.String"))
    table.Columns.Add("Date/Time", Type.GetType("System.String"))

Как только пользователь нажимает кнопку, она генерируется в datagridview, используя следующий код:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    table.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, ComboBox1.SelectedItem.ToString(), DateTimePicker1.Text)

Эти данные экспортируются с помощью другой кнопки, чтобы преуспеть для других целей.

В основном я пытаюсь добавить изображение в этот datagridview в конце, и я нашел код, но я могу заранее создать столбец, который конфликтует с уже заполненными данными, которые я показал ниже, из-за того, что я нажимаю "Пуск" он уже показывает столбец с именем images на основе ' dgvImageColumn.HeaderText = "Image", показанного ниже.

   Private Sub Add_Row_To_Datagridview_Using_Textboxes_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' header for 
    table.Columns.Add("Id", Type.GetType("System.Int32"))
    table.Columns.Add("First Name", Type.GetType("System.String"))
    table.Columns.Add("Last Name", Type.GetType("System.String"))
    table.Columns.Add("Age", Type.GetType("System.Int32"))
    table.Columns.Add("Gender", Type.GetType("System.String"))
    table.Columns.Add("Date/Time", Type.GetType("System.String"))
    '  Create Datagridview image column
    Dim dgvImageColumn As New DataGridViewImageColumn
    ' set header text to the column
    dgvImageColumn.HeaderText = "Image"
    dgvImageColumn.ImageLayout = DataGridViewImageCellLayout.Stretch
    DataGridView1.Columns.Add(dgvImageColumn)

    DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    DataGridView1.RowTemplate.Height = 120
    DataGridView1.AllowUserToAddRows = False
End Sub

Любой совет, как упростить это, чтобы я мог добавить еще один столбец в конце «дата/время» вместе со всеми данными, вставленными пользователем в текстовые поля, поле со списком и dataatimepicker, чтобы показать изображение, которое пользователь загружает с помощью, а также это текущий код, который у меня есть;

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim opf As New OpenFileDialog
    opf.Filter = "Choose Image(*.jpg;*.png;*.gif)|*.jpg;*.png;*.gif"

    If opf.ShowDialog = DialogResult.OK Then
        PictureBox1.Image = Image.FromFile(opf.FileName)
    End If
End Sub

Заранее спасибо за прочтение этой ветки.

В конечном счете, я ищу способ добавить изображение с помощью table.Columns.Add, чтобы избежать конфликта.

Изображение


person Chris    schedule 16.04.2017    source источник
comment
Возможно, вы захотите добавить столбец с кнопкой «Загрузить изображение», по нажатию которой пользователь загружает изображение, после чего изображение отображается. Кроме того, вы можете отредактировать формулировку своего вопроса, чтобы сделать ваше требование более четким и ясным.   -  person Whirl Mind    schedule 16.04.2017
comment
Вы должны извинить меня, поскольку я очень новичок в программировании.   -  person Chris    schedule 16.04.2017
comment
Хорошо. Сделайте снимок экрана вашего datagridview, удалите всю конфиденциальную информацию, а затем разместите его, чтобы люди могли видеть проблему, с которой вы столкнулись. В общем, если вы ожидаете, что пользователь загрузит изображение, вы помещаете значок или кнопку с надписью «загрузить», а затем пишете некоторый код за кнопкой, который запрашивает путь, а затем, когда указан путь, запускает дополнительный код для загрузите его и дополнительный код (может быть Ajax), чтобы показать его пользователю в datagridview.   -  person Whirl Mind    schedule 16.04.2017
comment
Изображение добавлено в тему   -  person Chris    schedule 16.04.2017
comment
Вы имеете в виду: код, который у вас есть в настоящее время, отлично работает для вас с точки зрения функциональности, но вы с нетерпением ждете более простого кода? Или вы видите проблему с отображением DataGridView? Вы хотите, чтобы столбец изображения располагался после конца столбца даты/времени, а не в начале? Если да, скажите в своем вопросе: «Я хочу, чтобы столбец изображения отображался последним в datagridview». Кроме того, вы можете добавить другие столбцы, используя DataGridview1.columns.add вместо table.columns.add, что даст вам больше контроля и единообразия?   -  person Whirl Mind    schedule 16.04.2017
comment
Привет, Вихрь. Проблема в том, что когда я «запускаю» проект, datagridview автоматически отображает столбец изображения на основе приведенного выше кода для вставки столбца. С другой стороны, другие столбцы не будут отображаться, пока я не вставлю информацию в текстовое поле и не нажму кнопку «Добавить». Я в основном хочу сделать так, чтобы, когда я «загружаю» и изображение, оно не отображало никаких данных, пока я не нажму кнопку «добавить»   -  person Chris    schedule 16.04.2017
comment
Затем сдвиньте код построения datagridview при нажатии кнопки «Добавить» вместо загрузки страницы?   -  person Whirl Mind    schedule 16.04.2017
comment
когда я добавляю PictureBox1.Image в table.row.add и нажимаю «Добавить», в столбце отображается следующее: System.Drawing.Bitmap   -  person Chris    schedule 16.04.2017


Ответы (1)


Ответил!

Нагрузка:

  Private Sub Add_Row_To_Datagridview_Using_Textboxes_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' header for 
    table.Columns.Add("Id", Type.GetType("System.Int32"))
    table.Columns.Add("First Name", Type.GetType("System.String"))
    table.Columns.Add("Last Name", Type.GetType("System.String"))
    table.Columns.Add("Age", Type.GetType("System.Int32"))
    table.Columns.Add("Gender", Type.GetType("System.String"))
    table.Columns.Add("Date/Time", Type.GetType("System.String"))
    table.Columns.Add("Image", GetType(Image))

Кнопка:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    table.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, ComboBox1.SelectedItem.ToString(), DateTimePicker1.Text, PictureBox1.Image)
    DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    DataGridView1.RowTemplate.Height = 120
    DataGridView1.AllowUserToAddRows = False
    DataGridView1.DataSource = table

Спасибо за поддержку!

person Chris    schedule 16.04.2017