2017-04-16 57 views
0

enter image description here我很新的視覺工作室,所以道歉,如果這已經在別處解答,因爲我已經做了幾次搜索,找不到任何東西來解決我的問題。Datagridview在表列中包含圖像

我現在有一個形式,是空白內一個DataGridView,並且當用戶將數據插入到文本框,組合框和使用以下代碼一個DateTimePicker填充:

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在結束,我已經找到了一個代碼,但我可以提前生成一個列與已填充的數據衝突,因爲我已經填充的數據,因爲當我點擊'開始'它已經顯示了一個名爲基於'dgvImageColumn.HeaderText ='圖像''如下所示的圖像列。

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

+0

您可能想要添加一個列,其中包含一個按鈕,用於說明「上傳圖片」,點擊用戶上傳圖片,圖片顯示完成。 另外,您可能需要編輯問題的措辭以使您的要求更加明確和清晰。 –

+0

你不得不原諒我,因爲我對編程很陌生。 – Chris

+0

好的。截取datagridview,清除所有機密信息,然後放置它,以便人們可以看到您面臨的問題。一般來說,如果您希望用戶上傳圖片,您可以放置​​一個圖標或一個說明「上傳」的按鈕,然後在按鈕後面寫一些代碼,請求一個路徑,然後在給出路徑時,運行更多代碼上傳它,以及更多的代碼(可能是Ajax),以便在datagridview上將其顯示回給用戶。 –

回答

0

已回答!

負載:

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 

感謝您的支持!