【问题标题】:Datagridview include image in table columnDatagridview 在表格列中包含图像
【发布时间】:2017-04-16 15:34:53
【问题描述】:

在此处输入图片描述我对视觉工作室很陌生,因此如果这已经在其他地方得到回答,我深表歉意,因为我已经进行了多次搜索并且找不到任何可以解决我的问题的东西。

我目前在一个空白表单中有一个 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 中,并且我找到了一个代码,但我可以提前生成一个列,该列与我在下面显示的已填充数据冲突,因为当我单击时'start' 它已经显示了一个名为 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”添加图像以避免冲突。

Image

【问题讨论】:

  • 您可能想要添加一个包含“上传图片”按钮的列,用户点击该按钮即可上传图片,完成后会显示该图片。此外,您可能希望编辑问题的措辞,使您的要求更加明确和清晰。
  • 对不起,我对编程很陌生。
  • 好的。截取您的 datagridview 的屏幕截图,将所有机密信息删除,然后将其放上来,以便人们看到您面临的问题。一般来说,如果您希望用户上传图像,您可以放置​​一个图标或按钮,上面写着“上传”,然后在按钮后面编写一些代码,询问路径,然后在给出路径时运行更多代码上传它,以及更多代码(可能是 Ajax)在 datagridview 上显示给用户。
  • 图片添加到线程
  • 您的意思是:您目前拥有的代码在功能方面对您来说很好,但您期待更简单的代码?或者您看到 DataGridView 显示有问题?您是否希望将图像列放在日期/时间列的末尾而不是开头?如果是的话,比如说,在你的问题中,“我希望图像列最后出现在 datagridview 中”。此外,您可以使用 DataGridview1.columns.add 而不是 table.columns.add 添加其他列,从而为您提供更多控制和统一性?

标签: vb.net visual-studio datagridview


【解决方案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

感谢支持!

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2020-11-24
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多