在DataGrid中添加图片列(VB.NET)

详解vb.net实现图片以二进制形式上传和读取到数据库 <br /> 本篇文章旨在vb.net下实现图片以二进制形式存到数据库,并能从数据库中读取显示出来,下面附了运行后的效果和代码例子<br />1. 导入图像文件,以二进制形式存入数据库表。<br />2. 从数据库表读取二进制信息,返原显示在页面的datagrid 中<br />数据库表结构设计:<br /> <br />效果图:<br /> <br />---Web.Config---<br /><?xml version="1.0" encoding="utf-8" ?><br /><configura 阅读详情

重写DataGridTextBoxColumn类


Imports  System
Imports  System.Windows.Forms
Imports  System.Drawing
Imports  System.Data
Imports  System.Collections


' / <summary>
'
/ Summary description for DataGridImageCell.
'
/ </summary>

Public   Class DataGridImageCell
   
Inherits DataGridTextBoxColumn
   
Private theImages1 As ArrayList
   
   
Public Sub New()
   
End Sub
 'New
   
   
   
Public Property theImages() As ArrayList
      
Get
         
Return theImages1
      
End Get
      
Set
         theImages1 
= value
      
End Set
   
End Property

    
    
Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics, ByVal bounds As System.Drawing.Rectangle, ByVal [source] As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal backBrush As System.Drawing.Brush, ByVal foreBrush As System.Drawing.Brush, ByVal alignToRight As Boolean)
        
Dim o As Object = Me.GetColumnValueAtRow([source], rowNum)
        
If Not (o Is Nothing) Then
            
Dim i As Integer = Fix(o)
            g.FillRectangle(backBrush, bounds)

            
Dim bmp As Bitmap = CType(theImages(i), Bitmap)

            
'GridImageCellDrawOption cellDrawOption = GridImageCellDrawOption.NoResize;
            'GridImageCellDrawOption cellDrawOption = GridImageCellDrawOption.FitProportionally;
            Dim cellDrawOption As GridImageCellDrawOption = GridImageCellDrawOption.FitToCell


            
Dim gu As System.Drawing.GraphicsUnit = System.Drawing.GraphicsUnit.Point

            
Dim srcRect As RectangleF = bmp.GetBounds(gu)
            
Dim destRect As Rectangle = Rectangle.Empty

            
Dim saveRegion As [Region] = g.Clip

            
Select Case cellDrawOption
                
Case GridImageCellDrawOption.FitToCell
                    destRect 
= bounds
                
Case GridImageCellDrawOption.NoResize
                    destRect 
= New Rectangle(bounds.X, bounds.Y, Fix(srcRect.Width), Fix(srcRect.Height))
                    g.Clip 
= New [Region](bounds)
                
Case GridImageCellDrawOption.FitProportionally
                    
If (True) Then
                        
Dim srcRatio As Single = srcRect.Width / srcRect.Height
                        
Dim tarRatio As Single = System.Convert.ToSingle(bounds.Width) / bounds.Height
                        destRect 
= bounds
                        
If tarRatio < srcRatio Then
                            destRect.Height 
= Fix(destRect.Width * srcRatio)
                        
Else
                            destRect.Width 
= Fix(destRect.Height * srcRatio)
                        
End If
                    
End If

                
Case Else
            
End Select

            
If Not destRect.IsEmpty Then
                
'g.DrawImage(bmp, destRect, srcRect, gu)
                Dim destRectF As New RectangleF(destRect.X, destRect.Y, destRect.Width, destRect.Height)
                
Dim srcRectF As New RectangleF(srcRect.X, srcRect.Y, srcRect.Width, srcRect.Height)

                g.DrawImage(bmp, destRectF, srcRectF, gu)
            
End If
            g.Clip 
= saveRegion
        
End If
    
End Sub
 'Paint


    
Protected Overloads Overrides Sub Edit(ByVal [source] As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal bounds As System.Drawing.Rectangle, ByVal [readOnly] As Boolean, ByVal instantText As String, ByVal cellIsVisible As Boolean)
        
'overriden to avoid editing
    End Sub
 'Edit



    
Public Enum GridImageCellDrawOption
        FitToCell 
= 0
        NoResize 
= 1
        FitProportionally 
= 2
    
End Enum
 'GridImageCellDrawOption

End Class
  ' DataGridImageCell

测试代码

Private   WithEvents  dataGrid1  As  System.Windows.Forms.DataGrid

  
Private  nRows  As   Integer   =   5
    
Private  bitMaps  As  ArrayList

 
Private   Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        
'create a datatable
        Dim dt As New DataTable("MyTable")

        dt.Columns.Add(
New DataColumn("Col0"))
        dt.Columns.Add(
New DataColumn("Images", GetType(Integer)))

        
Dim r As New Random()
        
Dim i As Integer

        
For i = 0 To nRows - 1
            
Dim dr As DataRow = dt.NewRow()
            dr(
0) = String.Format("row{0}", i)
            dr(
1) = r.Next(4)
            dt.Rows.Add(dr)
        
Next

        
'store bitmaps in an arraylist
        bitMaps = New ArrayList()
        
Dim strm As System.IO.Stream = [GetType]().Assembly.GetManifestResourceStream("ImageCellInDataGrid.Blue hills.jpg")
        bitMaps.Add(
New Bitmap(strm))
        strm 
= [GetType]().Assembly.GetManifestResourceStream("ImageCellInDataGrid.Sunset.jpg")
        bitMaps.Add(
New Bitmap(strm))
        strm 
= [GetType]().Assembly.GetManifestResourceStream("ImageCellInDataGrid.Water lilies.jpg")
        bitMaps.Add(
New Bitmap(strm))
        strm 
= [GetType]().Assembly.GetManifestResourceStream("ImageCellInDataGrid.Winter.jpg")
        bitMaps.Add(
New Bitmap(strm))

        
Dim tableStyle As New DataGridTableStyle()
        tableStyle.MappingName 
= "MyTable"

        
Dim tbc As New DataGridTextBoxColumn()
        tbc.MappingName 
= "Col0"
        tbc.HeaderText 
= "Column 1"
        tbc.Width 
= 50
        tableStyle.GridColumnStyles.Add(tbc)

        
Dim width As Integer = Me.dataGrid1.ClientSize.Width - tbc.Width - Me.dataGrid1.RowHeaderWidth - 4
        
Dim tbc1 As New DataGridImageCell()
        tbc1.MappingName 
= "Images"
        tbc1.HeaderText 
= "Images"
        tbc1.theImages 
= bitMaps
        tbc1.Width 
= width
        tableStyle.GridColumnStyles.Add(tbc1)

        
Me.dataGrid1.TableStyles.Add(tableStyle)
        
Me.dataGrid1.DataSource = dt
        dt.DefaultView.AllowNew 
= False

        
Dim rect As Rectangle = Me.dataGrid1.GetCellBounds(0, 0)
        topPos 
= rect.Top
        
Dim height As Integer = (Me.dataGrid1.ClientSize.Height - topPos - nRows) / nRows
        tableStyle.PreferredRowHeight 
= height
        
Me.dataGrid1.DataSource = Nothing
        
Me.dataGrid1.DataSource = dt
    
End Sub
  ' Form1_Load 
vb.net中自动调整datagrid中的列宽 问题:在软件开发中,利用datagrid 显示结果集dataset中表的记录,发现不能根据值的长度动态调整列宽解决过程:通过csdn论坛讨论和搜索相关的帖子,总结了部分前人的经验。实现过程:方法介绍:一 设置dbgrid样式表在调整显示列宽之前要给datagrid添加表的样式,即DataGridTableStyle,如下方法参数dataGridPara 为DataGrid实例,strtableN 阅读详情

相关推荐

DataGrid列宽随着内容自动变化

在使用vs2005时进行wince开发时,用Datagrid控件显示表格数据,当表格内容过多时,Datagrid控件单元格宽度并不足以用来完全显示表格中的数据内容,,只有自己每次去拉动分界线,来进行调整。当出现表格字段比较多时,这样做就显得很麻烦。PDA本身屏幕就很小,即使只显示3-5列,拖动依旧很烦人,因此就有了实现自动调整列宽功能的想法。首先到网上搜了一下,只发现一个PC机用的,vb.

dotnetlife的专栏 6765

VB.NET学习笔记:操作数据集DataSet中DataTable数据行(DataRow)——新增、插入、复制、克隆

通常我们都知道可以使用OleDbDataAdapter对象的Fill方法从数据源检索数据并填充DataSet 中的DataTable,其实我们也可以人工为DataTable添加DataRow。 一、Rows.Add和Rows.InsertAt方法 Add和InsertAt方法都可以把新行添加到DataTable。 新一个Windows应用程序,在Form1窗体拉入一个按钮和DataGridView...

zyjq52uys的博客 1万+

VB.NET逐行(一行一行)向DataGridView数据控件中添加数据

<br /><br />在网络上很有看到逐行(一行一行)向DataGridView数据控件中添加数据,在这里我写了一个范例,可供大家参考!希望对有用到的同志有用。。。。<br /> <br />Dim AddDataSet As New DataSet() '实例化一个 DataSet数据集<br />        Dim AddRow As DataRow   '实例化一个DataRow数据行<br />        Dim RowValues(7) As Object  '定义一维数组<br

wolfxin2010的专栏 1万+

如何在datagridview控件的某个单元格里实现图片展示,其中图片从文件夹中获取?

求问大佬

wpxwpx20000105的博客 442

vb.net2003中,利用datagrid更新数据(原创)

运行环境说明:Windows 2000 Advanced Server +VB.NET2003+MS SQL SERVER 2000 第1部份 建立数据库student,建立表stuinf(有两种方式) 1.1 方式一:用查询分析器建库,语句如下: use master go if exists (select * from dbo.sysdatabases where name = stude

longge165的专栏 2537

C# DataGridView里添加小图标

DataGridView里添加小图标DataGridView里添加小图标DataGridView里添加小图标

如何使DATATABLE中动态插入图片,并在DATAGIRDVIEW中显示

    Private Function labelupdate()Function labelupdate() As Boolean        Try            Dim i As Int32            Dim aa As String            aa = ""            DataGridView2.AutoGenerateColumns =

yck263的专栏 3193

TESSY创建单元测试或集成测试工程

我们以tessy5.1为例,给大家展示单元测试和集成测试工程的创建过程。

空气中的告白专栏 1681

ckfinder 图片预览 有的显示有的不显示_VGA显示图片

VGA显示图片1.1 FPGA存储器 目前大多数FPGA都有内嵌的块RAM(Block RAM),可以将其灵活地配置成单端口RAM(DPRAM,Single Port RAM)、双端口RAM(DPRAM,Double Ports RAM)、伪双端口RAM(PseudoDPRAM)、CAM(Content AddressableMemory)、FIFO等常用存储结构。FPGA中其实并...

weixin_39976382的博客 355

S32K3 MCAL配置 【MCU、PORT、DIO】

1、s32k3时钟源可由PLL, FXOSC, FIRC, SIRC, and SXOSC五种时钟源生成,可按照手册推荐配置。目标是在在S32K344板子上点亮红色LED灯,需要配置的有MCU、PORT、DIO模块。MCU最主要的是时钟配置,要翻看芯片手册,理解时钟树。1、通用配置中,没有什么特殊需求按照demo配置就好。1、配置MC_CGM mux 0 clocks时钟。1、外部晶振配置按照实际项目原理图进行配置。1、外部晶振配置,按照实际项目配置。1、PLL时钟按照手册进行配置。

weixin_43741076的博客 3242

服务器安全配置:二、本地安全策略设置

密码最长使⽤期限”设置为“90天”;“⽤可以还原的加密来存储密码”设置为“禁⽤”“复位账户锁定计数器”设置为15分钟,贴图这里是我自己设置的时间,15分钟也够用,具体看自己需要。”网络访问: 不允许 SAM 帐户和共享的匿名枚举“设置为“已启用””网络访问: 限制对命名管道和共享的匿名访问“设置为“已启用””网络访问: 不允许匿名枚举 SAM 帐户“设置为“已启用”“关机: 允许系统在未登录的情况下关闭”设置为“已禁用”(1)交互式登录:不显示最后的⽤户名”设置为“已启⽤”

weixin_48825672的博客 3135

VB.net数据库编程中DataGrid控件的使用技巧

如何用同一个DataGrid显示不同的数据表;如何用DataGrid显示主表/明细表的内容;如何用DataGrid分页显示或编辑数据表的记录。这些技巧在开发数据库程序中很实用。 DataGrid是VB.NET中重要的数据感知控件,它不仅可以把数据库的记录以表格形式显示出来,而且可以表格形式编辑数据库的记录,所以,它在数据库编程中应用非常广泛。那么,在VB.NET数据库编程中DataGrid控件有哪些使用技巧呢?这就是我今天要谈的内容。

jxjxlc的专栏 1万+

《遥感大模型生产级实战:从数据到决策的端到端AI工程》系列第三部分:城市洪涝灾害应急响应与评估平台实战-文章 14:项目二启动与多源异构数据对齐

我们将系统性地梳理城市洪涝场景下的所有关键数据源,从天上的卫星(光学与SAR)、空中的无人机,到地面的物联网传感器和社交媒体信息流,深入剖析每种数据在洪涝响应中的独特价值、获取方式与内在局限性。本章的核心将是一个详尽的、生产级的数据对齐技术全景,我们将分步解决三大核心对齐难题:空间对齐(将所有数据投影到统一的地理坐标系)、时间对齐(处理不同采样频率的时间序列)以及最困难的语义对齐(将文本描述与物理观测相关联)。

panshengwu的博客 2003

[原创]VB.net技巧之五------在DataGrid中显示图片

        在数据表userlist 中有一个字段 foto 用来存放图片的路径(包括图片文件名),为了在 DataGrid 的 Cell 中显示实际的图片,我们可以定义一个模板列,然后给该列赋予字段foto 的值,就可以在 DataGrid 的 Cell 中显示图片.       首先请看如下代码:      WebForm2.aspx 文件:     WebForm2        htt

Welcome *_* 一切皆有可能,一切皆需努力! 1687

不写代码,Cursor 10分钟开发1个APP!保姆级教程喂饭来了

做出第一个能运行的app,那种成就感真的很棒。虽然过程可能有点折腾,但只要耐心一点,问题都能解决。记住,遇到问题不要慌,现在有AI帮忙,大部分问题都能快速解决。重要的是迈出第一步,开始动手实践。你的第一个app可能很简单,但这是一个很好的开始。随着经验积累,你能做出的东西会越来越酷。现在就开始行动吧,说不定下个月你就能向朋友炫耀你自己做的app了!

chenhong007的博客 1548

CELF(Cost-Effective Lazy Forward selection)具有成本效益的惰性前向选择算法

CELF(Cost-Effective Lazy Forward selection)算法解析      引言:在社交网络影响力最大化问题的求解过程中,我们往往需要去选择一些目标种子结点作为信息初始传播的源头。贪婪算法在传播效果上的解决可以达到影响的最大化,但是在时间复杂度上面显得确十分糟糕。为此CELF算法应势而生,CELF算法利用了函数次模性的特点,在第一轮选择种子结点时,计算网络中所有节点的边际收益,但将在之后的过程中,不再做网络节点边际收益的重复计算,这相对于传统的贪婪算法,将在时间上得到非常明显的

hahaxq的博客 2476

vb.net 教程 3-10 窗体编程 datagridview控件 11 运行时增加下拉框列和图片列

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 下拉框列的增加同前面所讲述的文本列和复选框列类似, 此外,与窗体的下拉框控件都是使用Items属性来设置成员。具体代码如下: '增加一列下拉框 Private Sub Button15_Click(sender As Object, e As EventArgs) Handl...

学习微软 .net 技术开发 1850

【CUDA编程部署教程】第一章:GPU架构与CUDA编程核心 1

我们将剖析现代GPU的计算心脏——流式多处理器(SM),理解其独特的Warp执行模型,探索Tensor Core带来的革命性矩阵运算加速,并深入探讨决定性能命脉的内存体系。当必须访问全局内存时,则必须遵循**合并访问(Coalesced Access)**的原则,即让一个Warp内的32个线程访问连续的内存地址,从而让硬件将多次访问合并为一次高效的内存事务,以充分利用带宽。SM的调度器以Warp为单位分派指令,在一个Warp内,所有32个线程在同一时刻执行完全相同的指令,但处理的数据不同,这种模型被称为。

VectorShift的博客 220

vb.net html图片,手把手教你VB.NET DataGrid图片显示

学习VB.NET时,你可能会遇到VB.NET上传图片并在DataGrid中显示的问题,这里将介绍VB.NET DataGrid显示问题的解决方法,在这里拿出来和大家分享一下。一、程序功能当上传图片大小超过8K或格式不符时禁止上传,上传通过之后,用VB.NET DataGrid显示上传的图片二、建立数据库在MSSQL的NorthWind数据库中新建一个users表。三、窗体设计:1、新建ASP.NE...

weixin_42109639的博客 724

CloudCompare 二次开发(35)——提取多条直线

使用CloudCompare与PCL编程实现的多条空间直线的提取。

点云侠的博客 437

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

vb.net 标题部分根据datagrid内容变动调整标题列宽

问题:如上图,红色框标题列的宽度无法与下部datagrid的内容的列宽保持一致。&lt;DIV class="cssDivHeader cssTxtGridTitleOrange gridHeader" id="errDIV1" style="Z-INDEX: 117; LEFT: 3%; WIDTH:600px ; POSITION: absolute; TOP: 180px; HEIGHT: ...

lsh15846393847的博客 683

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[VB.NET]求解:VB.NET 中DataGrid控件怎么使用啊???

<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--><script type="text/javascript"

VB.NET学习网-VB.NET实例、VB.NET教程、VB.NET源码下载 684

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB2008.NET DataGrid相关总结2

1.VB2008.NET中DataGrid控件的使用   http://www.002pc.com/master/College/Programming/aspnet/13233.html     在VB6 在,ADO是大家在数据库编程中用得较多的。而在新的vb.net中,虽然也可以用它来查询数据库,但在与新的datagrid的绑定中,不能像以前那样使用:“datagrid1.datas

杨文的专栏(南京Java讲师) 765

[VB.NET]怎样在DataGrid控件中显示不同数量的不同图片呢?

<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--><script type="text/javascript"

VB.NET学习网-VB.NET实例、VB.NET教程、VB.NET源码下载 659

为 ASP.NET Datagrid 创建自定义列.VB

为 asp.net Datagrid 创建自定义列 Marcie RobillardDatagridGirl.com 2003 年 9 月摘要:asp.net Datagrid 是 Web 开发人员可以使用的一个功能强大的控件。通过添加自定义列以便为用户更准确地显示数据,来学习如何增强该控件的功能。(本文包含一些指向英文站点的链接。)适用于:    Microsoft® asp.net下载本文的源

1087
上一篇: 承载 ComboBox 控件的 DataGridColumnStyle (VB.NET)
下一篇: ]在GridView中插入新记录
sqlmlm
博客等级 码龄19年 12粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值