首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重写DataGridViewColumn代码以插入打开对话框的图片框

DataGridViewColumn是Windows Forms中的一个控件,用于显示和编辑数据表格。重写DataGridViewColumn代码以插入打开对话框的图片框,可以实现在DataGridView中插入一个可以打开对话框选择图片的图片框。

首先,需要创建一个自定义的DataGridViewColumn类,继承自DataGridViewColumn。在该类中,重写InitializeCell方法,以创建并初始化单元格的控件。

代码语言:csharp
复制
using System;
using System.Drawing;
using System.Windows.Forms;

public class OpenFileDialogColumn : DataGridViewColumn
{
    public OpenFileDialogColumn() : base(new OpenFileDialogCell())
    {
    }
}

public class OpenFileDialogCell : DataGridViewTextBoxCell
{
    protected override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
    {
        base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);

        var openFileDialog = new OpenFileDialog();
        openFileDialog.Filter = "Image Files (*.jpg, *.png, *.gif)|*.jpg;*.png;*.gif";

        var dataGridView = this.DataGridView;
        if (dataGridView != null)
        {
            var editingControl = dataGridView.EditingControl as OpenFileDialogEditingControl;
            if (editingControl != null)
            {
                editingControl.OpenFileDialog = openFileDialog;
            }
        }
    }

    public override Type EditType => typeof(OpenFileDialogEditingControl);
    public override Type ValueType => typeof(Image);
    public override object DefaultNewRowValue => null;
}

public class OpenFileDialogEditingControl : OpenFileDialog, IDataGridViewEditingControl
{
    private DataGridView dataGridView;
    private bool valueChanged = false;
    private int rowIndex;

    public OpenFileDialogEditingControl()
    {
        this.ShowReadOnly = true;
    }

    public object EditingControlFormattedValue
    {
        get { return this.FileName; }
        set { this.FileName = (string)value; }
    }

    public object GetEditingControlFormattedValue(DataGridViewDataErrorContexts context)
    {
        return this.FileName;
    }

    public void ApplyCellStyleToEditingControl(DataGridViewCellStyle dataGridViewCellStyle)
    {
        this.Font = dataGridViewCellStyle.Font;
        this.ForeColor = dataGridViewCellStyle.ForeColor;
        this.BackColor = dataGridViewCellStyle.BackColor;
    }

    public int EditingControlRowIndex
    {
        get { return rowIndex; }
        set { rowIndex = value; }
    }

    public bool EditingControlWantsInputKey(Keys keyData, bool dataGridViewWantsInputKey)
    {
        return !dataGridViewWantsInputKey;
    }

    public void PrepareEditingControlForEdit(bool selectAll)
    {
        // No preparation needed
    }

    public bool RepositionEditingControlOnValueChange
    {
        get { return false; }
    }

    public DataGridView EditingControlDataGridView
    {
        get { return dataGridView; }
        set { dataGridView = value; }
    }

    public bool EditingControlValueChanged
    {
        get { return valueChanged; }
        set { valueChanged = value; }
    }

    public Cursor EditingPanelCursor
    {
        get { return base.Cursor; }
    }

    protected override void OnValueChanged(EventArgs eventargs)
    {
        valueChanged = true;
        this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
        base.OnValueChanged(eventargs);
    }
}

使用这个自定义的DataGridViewColumn类,可以在DataGridView中插入一个可以打开对话框选择图片的图片框。

代码语言:csharp
复制
var openFileDialogColumn = new OpenFileDialogColumn();
openFileDialogColumn.HeaderText = "Image";
openFileDialogColumn.Name = "imageColumn";

dataGridView.Columns.Add(openFileDialogColumn);

这样,当用户编辑该列时,会弹出一个文件选择对话框,选择的图片会显示在对应的单元格中。

这个自定义的DataGridViewColumn类可以应用于各种需要在DataGridView中插入图片的场景,例如商品列表中的商品图片、用户头像等。

腾讯云相关产品中,可以使用对象存储 COS 存储用户上传的图片文件,并通过 COS SDK 进行上传和下载操作。具体可以参考腾讯云对象存储 COS 的官方文档:https://cloud.tencent.com/document/product/436

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

新内容 - 构建文档 - ckeditor5中文文档

增强用户体验 ckeditor5努力打造无缝、专注编辑体验让用户去专注于创作内容。 更好图片展示 插入图片到内容中是非常直观,在用户体验上隐藏了所有的技术方面(上传,重置大小)。...没有了复杂对话框! 过时图像对齐概念被取消,支持了这些图片样式: ? 与Easy Image集成后,上传,调整大小和生成不同图像大小实现响应式设计都是自动化。 ?...简单链接 没有了复杂链接对话框。 单击链接时,首先您将看到一个气球,其中包含编辑链接或在新选项卡中打开链接选项。 ? 在链接周围插入符号 在链接周围输入文字从未如此简单。...在CKEditor 5中删除了误导性格式化工具,删除或简化了对话框,转而使用不需要配置精心设计功能。 轻量 编辑器更轻巧,更快速了。 它为桌面和移动设备带来了出色用户体验。...Letters是使用CKEditor 5强大协作功能应用程序示例。 ? 更现代化 CKEditor 5使用了ECMAScript 2015(也称为ES6)提供强大模块功能完全重写

3.2K40

Android开发笔记(一百五十二)H5通过WebView上传图片

如此一来,就不能仅仅从相册选择文件,而要弹出一个列表对话框,好让用户决定是从相册上传图片,还是当场拍照当场上传。...,先看看Android4.4手机测试画面,下面的左图为打开测试网址初始界面,右图为点击上传按钮后在屏幕中央弹出选择对话框: ?...先在对话框中选择从相册上传,成功上传图片h5页面如下面的左图所示;重新点击上传按钮,这次选择使用相机拍照,并把照片成功上传后h5页面如下面的右图所示: ? ?...再来看看Android6.0手机测试画面,下面的左图为打开测试网址初始界面,右图为点击上传按钮后在屏幕下方弹出选择对话框: ? ?...先在对话框中选择从相册上传,成功上传图片h5页面如下面的左图所示;重新点击上传按钮,这次选择使用相机拍照,并把照片成功上传后h5页面如下面的右图所示: ? ?

1.3K30
  • Python 应用开发:Streamlit 布局篇(容器布局)

    st.columns 并列方式插入容器。 插入若干并排排列多元素容器,并返回一个容器对象列表。 要在返回容器中添加元素,可以使用 with 符号(首选)或直接调用返回对象方法。...使用 @st.experimental_dialog 装饰函数将成为对话框函数。调用对话框函数时,Streamlit 会在应用程序中插入一个模式对话框。...对话框代码可以与会话状态、导入模块以及在对话框外创建其他 Streamlit 元素交互。请注意,这些交互会在多个对话框重新运行时叠加。您需要负责处理该行为任何副作用。  ...警告 一个对话框不能打开另一个对话框。一个脚本运行中只能调用一个对话框函数,这意味着在任何时候都只能打开一个对话框。...st.tabs 插入分隔成标签容器。 标签形式插入多个多元素容器。标签是一种导航元素,可让用户在相关内容组之间轻松移动。

    92010

    全网最全程序员效率工具及小技巧

    for GitHub 实时匹配搜索结果,让搜索快人一步 在这里插入图片描述 GitHub Hovercard 悬浮小形式展示作者,仓库,Issues,Pull requests概述信息...弹出对话框 在这里插入图片描述 左上方显示了改动过文件(后面会演示到)和新增文件,改动和内容和新增内容都会在下方显示,并且改动过文件会对比显示(非常方便) 要保存哪些文件选中即可(类似于...在这里插入图片描述 找到如图所示位置,点击Add Action 在这里插入图片描述 弹出对话框,点击图中所示位置 在这里插入图片描述 点击图中所示位置 在这里插入图片描述 各个按钮顺序可以调整... 右键选中要回退版本,点击如下按钮 在这里插入图片描述 弹出对话框 在这里插入图片描述 点击commit,连commit message都不用你写了,接着点击push按钮即可 切换分支,tag,...点Checkout Tag or那个按钮,弹出对话框,粘贴刚才复制值即可 在这里插入图片描述

    1.1K10

    WPS Office AI实战:AI带来文档智能化体验

    ,支持WPS Office AI WPS客户端,目前支持Windows、Android、iOS以及网页版几种渠道(本例Windows系统为例) 安装完成后,打开WPS Office,登陆自己账号(...点击【WPS AI】按钮,可以弹出AI创作对话框,可以看到,已经预置了很多常见文案写作模式。 第二次唤醒时,有两种方式: 右上角插入子菜单中找到WPS AI能力,见下图。...在新段落前+号位置,弹出对话框直接选中WPS AI选项,就可以打开AI能力,见下图。 下面我们来试几个AI创作能力,看看能量到底有多大! 内容创作 创作从 0 到 1 往往是最艰难。...下面我们做几个小示例看一下实际效果。 运营策划案生成 在弹出AI对话框中,选择“运营策划案”方案,输入提示语后,运行AI。...多文档内容归纳总结 根据已经存在云文档,进行总结归纳,重写输出自己需要内容。比如别人旅行游记文档和自己预算表,WPS AI 将自动生成属于你旅行计划。

    59640

    windows和各编辑器实用快捷键总结

    windows快捷键 win+tab 选择界面 win+E 打开文件资源管理器 win+PrtSc 全屏截图并保存到系统图片”屏幕截图“文件夹,并放到剪贴板 win+shift+S 截取选中区域并放到剪贴板...) Ctrl+1 快速修复(最经典快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+O 快速显示 OutLine Ctrl+Space代码助手完成一些代码插入(但一般和输入法有冲突...Alt+Insert 在类内插入Getter,Setter,Constructor等 shift+F6 重命名 ctr+alt+T 代码模板围绕 ctr+alt+B 跳转到抽象方法实现位置...方向键上或下 整行整行地选取文本 Ctrl + shift + 方向键左或右 逐个单词地选取文本 Ctrl + shift + 方向键上或下 将当前行进行上移或下移 shift + Ctrl + g 弹出对话框...不一定适用于所有软件 ctl+tab切换标签 ctl+P 打开“打印”对话框 shift+tab 反缩进 ctl+w关闭当前标签 ctl+a全选 ctl+c复制 ctl+v粘贴 ctl+z

    90020

    Vba菜鸟教程

    代码完成后:工具-vbaproject属性-保护-查看时锁定-密码 编辑器 注释‘单引号开头,可通过调出编辑窗口批量注释和取消 强制转行:插入两个空格,下划线,回车 debug 在工具栏中,右键,...,变量值,数组信息,Stop可以中断 宏 开发者工具,设置安全性启用宏,保存文件需要保存为启用宏工作簿 使用相对流录制宏,不固定位置,相对位置操作 加载宏(本地代码库) 代码保存在模块 保存文件格式为...“插入对话框 xlDialogInsertHyperlink 596 “插入超链接”对话框 xlDialogInsertObject 259 “插入对象”对话框 xlDialogInsertPicture...342 “插入图片对话框 xlDialogInsertTitle 380 “插入标题”对话框 xlDialogLabelProperties 436 “标签属性”对话框 xlDialogListboxProperties...214 “对象保护”对话框 xlDialogOpen 1 “打开对话框 xlDialogOpenLinks 2 “打开链接”对话框 xlDialogOpenMail 188 “打开邮件”对话框 xlDialogOpenText

    17K40

    Excel图表技巧12:为图表精确配色

    此时,PowerPoint就派上用场了,它非常擅长计算对象的确切颜色,因为它有一种称为“取色器”功能。 1. 选择图表图片并复制。 2. 打开PowerPoint。 3....粘贴图表,或者直接插入图表图片。 4. 在幻灯片中插入任意大小任意形状,如下图1所示。 ? 图1 我们现在要确定右侧条形图所使用两种颜色。 5....图5 现在,我们已经确定了形状颜色,我们可以检查形状设置查看填充和边框颜色颜色代码。 9. 选择形状,单击“形状填充——其它填充颜色”。...在“颜色”对话框中,单击“自定义”选项卡,执行同样操作,可以查看形状轮廓颜色,如图7所示。 ? 图7 上述步骤完成后,我们就可以将这些颜色应用到自己图表中了。...图8 首先,选取“数据一”系列,单击“格式——形状填充——其它填充颜色”,在“颜色”对话框中选择“自定义”选项卡,在下面的RGB中输入上面获取颜色值,如下图9所示。 ?

    2.7K40

    OCX 入门

    ActiveX控件提供这些功能使得对其使用将是非常方便。本文下面即MFC为工 具对ActiveX控件开发进行介绍。 一、创建项目 1.打开VS2008新建MFC项目。...)vs2005会自动为你添加基本代码 ⑤为类添加成员变量 (一)为对话框类创建实例变量 1)在基本类CMyActiveXCtrl中为刚刚新建对话框类创建实例变量:在类视图中右键单击CMyActiveXCtrl...(二)为对话框控件创建实例变量 1)”确定”按钮为例,在该按钮处单击右键,选择”添加变量” 2)自定义变量名,我叫m_OKButton。...⑥在相应事件中添加代码创建并绘制对话框和控件 1)为CMyActiveXCtrl类处理WM_CREATE事件,初始化对话框对象: 左侧选中CMyActiveXCtrl,右侧属性栏选择”消息”那个小图标...成功后会有提示,直接点确定。 ⑩注册成功后插入相应网页中 编写测试网页,我推荐使用微软ActiveX Control Pad,不用自己写代码

    3.1K60

    Visual Studio 2008 每日提示(二十四)

    #232、如何设置在打开“新建项目”对话框中首选开发语言类型 原文链接:What settings are contained in the “New Project Dialog Preferred...注意下面的图片,你会发现没有任何工具窗口和文字编辑器工具栏显示。 你可以在自定义窗口布局。这些布局设置将会保存下来,下次打开vs仍然可以使用。当然也可以保存到环境配置文件里面。...在vs2008里有个新功能:跟踪点。 在编辑器右键,选择“断点”,然后再选择“插入跟踪点”。 在插入跟踪点对话框,选中“打印消息”,然后根据提示,输入你要输出变量。...这个跟踪点将会在调试窗格输出窗口被记录。 评论:有关如何输入显示内容,可以详细参考“插入跟踪点”对话框提示。...打开编辑器右键菜单,选择“组织using”,然后选择“移除未使用using”即可。 评论:这个功能确实非常不错,不移除并不影响代码运行,不过移除后,只保留使用using,让代码更简洁。

    1.2K70

    彻底禁用Chrome“请停用以开发者模式运行扩展程序”提示

    通过 右键chrome图标 --> 属性 --> 打开文件所在位置 找到chrome.dll文件 [在这里插入图片描述] [在这里插入图片描述] 将chrome.dll文件拖入x64.dbg,会出现两个弹窗...如图: [在这里插入图片描述]然后连续多次点击运行到用户代码按钮(我这里是连续点击6下),直至窗口标题处模块变成chrome.dll: [在这里插入图片描述] [在这里插入图片描述] 然后在主面板右键依次选择...搜索 --> 当前模块 --> 字符串: [在这里插入图片描述] 然后会打开一个搜索界面,等待模块搜索进度条100%也就是加载完毕: [在这里插入图片描述] 在搜索输入ExtensionDeveloperModeWarning...cmp eax,9,然后点击确定,注意只需要点击一次确定即可,点击确定后它还是会继续弹出其它行编辑界面,此时直接关闭对话框即可: [在这里插入图片描述] [在这里插入图片描述] [在这里插入图片描述]...,否则只能重装Chrome),先关掉x64dbg,将刚刚导出修补文件chrome.dll命名然后覆盖原来chrome.dll文件,重启Chrome,发现整个世界都清净了~~

    4.9K00

    >>开发工具:IntelliJ IDEA 2020.3基础技能

    编辑器配置 可以使用“设置/首选项”对话框⌘,来自定义编辑器行为。 下面是通用配置格式: 配置代码格式 在“设置/首选项”对话框中⌘,转到“编辑器” | “首选项”。代码样式。...配置代码完成选项 在“设置/首选项”对话框中⌘,,转到“编辑器” | “首选项”。一般| 代码完成。在这里,您可以配置区分大小写完成,自动显示选项,代码排序等。...配置插入符放置 在“设置/首选项”对话框中⌘,转到“编辑器” | “首选项”。通用。在“虚拟空间”部分,您可以配置插入符号放置选项。...选择“允许在行尾之后放置插入号”选项,插入号放置在下一行与上一行末尾相同位置。如果清除此选项,则将下一行插入号放置在实际行末尾。...选择“允许在选项卡内放置插入号”选项,帮助您在文件内将插入号上移或下移,同时将其保持在相同位置。 配置保存时尾随空格行为 在“设置/首选项”对话框中⌘,转到“编辑器” | “首选项”。通用。

    33220

    Python-Tkinter图形化界面设计(详细教程 )

    3.6 滑块) 3.7 菜单 3.8 子窗体 3.9 模式对话框(Modal) 3.9.1 交互对话框 3.9.2 文件选择对话框 3.9.3 颜色选择对话框 四、事件响应 五、背景图片...其中,标签实例lb 在父容器root中实例化,具有代码中所示text(文本)、bg(背景色)、fg(前景色)、font(字体)、width(宽,默认字符为单位)、height(高,默认字符为单位)...看下面的一个例子:实现列表初始化、添加、插入、修改、删除和清空操作,如下: ?...常见模式对话框有消息对话框、输入对话框、文件选择对话框、颜色选择对话框等。...例如:单击按钮,弹出文件选择对话框(“打开对话框),并将用户所选择文件路径和文件名显示在窗体标签上。如下 ?

    14.2K40

    Xilinx FPGA Partial Reconfiguration 部分重配置 详细教程

    在这里插入图片描述 这个模块代码也很简单,就是加1计数 module count_add( input clk, input rst, output...在这里插入图片描述 出现下面的对话框,点击Convert。该对话框是指如果使能了Partial Reconfiguration模式,是不能返回到普通模式。 ?...在这里插入图片描述 此时,弹出对话框提示我们输入创建Partition名字,我们起名为count_demo,点击OK ?...在这里插入图片描述 当我们在clk_gen_i0这个模块上右键选择Create Partition Definition时,会提示下面的对话框: module with out-of-context child...在这里插入图片描述 这里,点击+号按钮,出现下面对话框,首先点击Add Files,选择count_sub.v;然后输入Reconfiguration Module Name,由于我们只有一个模块,因此

    1.5K40

    超详细论文排版秘籍,宜收藏!

    在弹出【定义新多级列表】对话框中单击【更多】按钮,在 【将级别链接到样式】下拉列表中选择多级列表样式(级别 1—标题1、级别2—标题2为例,一般设置4个级别),如图7所示。...需要注意,修改时不能删掉灰色区域,灰色区域是一个域代码,只有域代码才能自动变更。...①选中图片/表格/公式,在【引用】选项卡中,单击【插入题注】命令, 在弹出【题注】对话框中,修改题注名称、创建和选择标签、选择题注位置、设置编号等,如图8所示。...③选择题注放置位置,一般图片题注放在下方,表格题注放在上方,但是 也有例外,要根据排版要求灵活设置。 ④单击【编号】按钮,弹出【题注编号】对话框,设置编号格式,单击【确定】按钮。...①在两个图片 / 表格 / 公式中间插入项目时,题注编号会自动修改。

    4.5K10

    dw8制作html手机兼容视频,Dreamweaver8在网页中插入Flash视频

    在 Dreamweaver “文档”窗口中打开 index.html 页面,插入一个三列表格,在由三列组成表格中间一列中放置图形之上单击一次。...选择“插入”>“媒体”>“Flash 视频”。 在“插入 Flash 视频”对话框中,从“视频类型”弹出式菜单中选择“渐进式下载视频”。...“宽度”和“高度”文本像素为单位指定 FLV 文件宽度和高度。可以任意调整这些值更改 Web 页面上 Flash 视频大小。增加视频尺寸时,视频图片品质通常会下降。...单击“确定”关闭对话框并将 Flash 视频内容添加到 Web 页面。...当您上传包含 Flash 视频内容 HTML 页面时,Dreamweaver 将这些文件作为相关文件上传(只要单击“要上传相关文件?”对话框“是”)。 保存该页,然后可以测试下效果。

    1.8K20

    idea插件开发指南_idea get set插件

    ,然后创建目录结构 图片 配置界面 配置界面长这个样子 图片 别忘记增加一个监听器,如果输入时间不在1小时内,给出提示 图片 图片 效果 图片 存储服务 存储服务将配置存储,防止用户重新打开后配置信息丢失...提醒对话框继承DialogWrapper类,DiaWrapper类是idea平台封装对话框基类。...图片 你点击叉叉是无法取消对话框,而且你也无法操作其他。 只能等待倒计时结束,自动关闭对话框。 而且当你重启后,还会接着上次编程已用时间继续倒计时。 默认是每编程25分钟,休息5分钟。...你可以在未触发提醒对话框时候配置今日跳过,并重启idea后生效。 当然你也可以配置非模式对话框,只是提醒,而不强制。...swing对计时器适配,使得使用计时器更新进度条更加简便。 在后则是idea中提供对话框封装,以及如何使用重写机制,来修改父类中对话框绘制,以及如何创建对话框,展示对话框和关闭对话框

    5.6K21

    Windows 罕见技巧全集3

    二、按快捷键Ctrl+J,在弹出页面设置对话框中,把Left、Top、Margin Width、Margin Height都设置为“0” 三,再在之前插入表格内插入表格,然后在此表格中制作网页内容。...56.自行维护智能ABC输入法用户词库 首先单击任务栏上智能ABC,选择“显示输入法状态”打开状态条,在状态条上点击右键,选择“自定义新词”打开自定义新词对话框,在新词中输入你要加入词...58.清除在IE里输入密码表 请点选“工具”→“Internet 选项”→“内容”→“自动完成”,打开自动完成设置对话框,在该对话框中可以删除密码和表单数据。...62.改变txt文件默认打开方式 如果你使用系统是Windows 9x,就在选择一个.txt文件后,按住“Shift”键同时单击鼠标右键,在出现下拉菜单中选择“打开方式”,弹出“打开方式对话框...,打开“自定义设置”对话框,接着选择“通过单击打开项目(指向时选定)”选项,并单击“确定”按钮关闭对话框,以后就可以通过鼠标单击直接启动应用程序了,很方便哦。

    1.5K10

    微搭低代码入门教程-低码编辑器介绍

    作为低码平台除了拖拉拽之外,最强大功能就是可以写代码了,可以调用平台提供丰富API,给我们小程序添加特色功能。...低码编辑器现在是在导航条上打开,先点击工具菜单图标 [在这里插入图片描述] 在弹出界面选择低代码编辑器 [在这里插入图片描述] [在这里插入图片描述] 低码方法作用域分为全局和页面,全局定义方法...,每个页面都可以使用,而页面定义方法本页面才可以调用 我们在当前页面定义一个hello低码方法,具体操作是在handler旁边点击+号 [在这里插入图片描述] 输入方法名称hello,点击保存按钮...[在这里插入图片描述] 保存后会生成一个代码模板,我们方法作用是弹出一个对话框,显示你好,世界内容 为此我们,需要找一下官方api看看对话框是如何创建 官方API [在这里插入图片描述] 复制代码进入到低码编辑器...[在这里插入图片描述] 这样就完成了低码调用 [在这里插入图片描述] 当然了这个是基础教程,具体你低码里要怎么处理需要根据需求而定,基本上核心内容都是需要在低码里完成

    1K10

    Eclipse使用入门教程

    如下图所示: [在这里插入图片描述] 图3.11 导入项目 2.3.2导出项目 点击菜单File->Export,然后在弹出Export对话框中展开General目录,选择Archive File,接着点击...,或者用快捷键Alt+Enter,可以打开项目属性对话框。...> Generate Getters and Setters…就可以打开Generate Getters and Setters对话框,在对话框中选择要生成方法,然后点击OK按钮即可。...这时候编辑器中将会绿色高亮行背景指示执行代码位置,如下图所示: [这里写图片描述] 图 3.20 调试时候代码指示器 而Variables视图则显示当前方法或者类中局部,全局等变量值。...选择菜单File -> New -> File 或者 File -> New -> Folder,可以打开新建文件或者目录对话框,如下图所示: [这里写图片描述] 图 3.25 Link 方式创建文件

    1.4K00
    领券