修改Datagrid,在列上绑定其他控件。

WPF控件DataGrid介绍 DataGrid的使用介绍 阅读详情

using System;

using System.Data;

using System.Windows.Forms;

using System.Drawing;

 

// This example shows how to create your own column style that

// hosts a control, in this case, a DateTimePicker.

public class DataGridTimePickerColumn : DataGridColumnStyle

{

    private RichTextBox myDateTimePicker = new RichTextBox();

    // The isEditing field tracks whether or not the user is

    // editing data with the hosted control.

    private bool isEditing;

 

    public DataGridTimePickerColumn() : base()

    {

        myDateTimePicker.Visible = false;

    }

 

    protected override void Abort(int rowNum)

    {

        isEditing = false;

 

        Invalidate();

    }

 

    protected override bool Commit

        (CurrencyManager dataSource, int rowNum)

    {

        myDateTimePicker.Bounds = Rectangle.Empty;

 

 

        if (!isEditing)

            return true;

 

        isEditing = false;

 

        try

        {

            DateTime value = System.DateTime.Parse(myDateTimePicker.Text);

            SetColumnValueAtRow(dataSource, rowNum, value);

        }

        catch (Exception)

        {

            Abort(rowNum);

            return false;

        }

 

        Invalidate();

        return true;

    }

 

    protected override void Edit(

        CurrencyManager source,

        int rowNum,

        Rectangle bounds,

        bool readOnly,

        string instantText,

        bool cellIsVisible)

    {

        DateTime value = (DateTime)

            GetColumnValueAtRow(source, rowNum);

        if (cellIsVisible)

        {

            myDateTimePicker.Bounds = new Rectangle

                (bounds.X + 2, bounds.Y + 2,

                bounds.Width - 4, bounds.Height - 4);

            myDateTimePicker.Text = value.ToString();

            myDateTimePicker.Visible = true;

        }

        else

        {

            myDateTimePicker.Text = value.ToString();

            myDateTimePicker.Visible = false;

        }

 

        if (myDateTimePicker.Visible)

            DataGridTableStyle.DataGrid.Invalidate(bounds);

    }

 

    protected override Size GetPreferredSize(

        Graphics g,

        object value)

    {

        return new Size(100, myDateTimePicker.PreferredHeight + 4);

    }

 

    protected override int GetMinimumHeight()

    {

        return myDateTimePicker.PreferredHeight + 4;

    }

 

    protected override int GetPreferredHeight(Graphics g,

        object value)

    {

        return myDateTimePicker.PreferredHeight + 4;

    }

 

    protected override void Paint(Graphics g,

        Rectangle bounds,

        CurrencyManager source,

        int rowNum)

    {

        Paint(g, bounds, source, rowNum, false);

    }

    protected override void Paint(

        Graphics g,

        Rectangle bounds,

        CurrencyManager source,

        int rowNum,

        bool alignToRight)

    {

        Paint(

            g,bounds,

            source,

            rowNum,

            Brushes.Red,

            Brushes.Blue,

            alignToRight);

    }

    protected override void Paint(

        Graphics g,

        Rectangle bounds,

        CurrencyManager source,

        int rowNum,

        Brush backBrush,

        Brush foreBrush,

        bool alignToRight)

    {

        DateTime date = (DateTime)

            GetColumnValueAtRow(source, rowNum);

        Rectangle rect = bounds;

        g.FillRectangle(backBrush,rect);

        rect.Offset(0, 2);

        rect.Height -= 2;

        g.DrawString(date.ToString("d"),

            this.DataGridTableStyle.DataGrid.Font,

            foreBrush, rect);

    }

 

    protected override void SetDataGridInColumn(DataGrid value)

    {

        base.SetDataGridInColumn(value);

        if (myDateTimePicker.Parent != null)

        {

            myDateTimePicker.Parent.Controls.Remove

                (myDateTimePicker);

        }

        if (value != null)

        {

            value.Controls.Add(myDateTimePicker);

        }

    }

 

    private void TimePickerValueChanged(object sender, EventArgs e)

    {

        this.isEditing = true;

        base.ColumnStartedEditing(myDateTimePicker);

    }

}

namespace DataGridColumnStyleExample

{

    using System;

    using System.Data;

    using System.Windows.Forms;

    using System.Drawing;

    using System.ComponentModel;

 

 

    public class MyForm : Form

    {

        private DataTable namesDataTable;

        private DataGrid grid = new DataGrid();

        public MyForm() : base()

        {

            InitForm();

 

            namesDataTable = new DataTable("NamesTable");

            namesDataTable.Columns.Add(new DataColumn("Name"));

            DataColumn dateColumn = new DataColumn

                ("Date", typeof(DateTime));

            dateColumn.DefaultValue = DateTime.Today;

            namesDataTable.Columns.Add(dateColumn);

            DataSet namesDataSet = new DataSet();

            namesDataSet.Tables.Add(namesDataTable);

            grid.DataSource = namesDataSet;

            grid.DataMember = "NamesTable";

            AddGridStyle();

            AddData();

        }

 

        private void AddGridStyle()

        {

            DataGridTableStyle myGridStyle = new DataGridTableStyle();

            myGridStyle.MappingName = "NamesTable";

 

            DataGridTextBoxColumn nameColumnStyle =

                new DataGridTextBoxColumn();

            nameColumnStyle.MappingName = "Name";

            nameColumnStyle.HeaderText= "??3?";

            myGridStyle.GridColumnStyles.Add(nameColumnStyle);

 

            DataGridTimePickerColumn timePickerColumnStyle =

                new DataGridTimePickerColumn();

            timePickerColumnStyle.MappingName = "Date";

            timePickerColumnStyle.HeaderText = "Date";

            timePickerColumnStyle.Width = 100;

            myGridStyle.GridColumnStyles.Add(timePickerColumnStyle);

 

            grid.TableStyles.Add(myGridStyle);

        }

 

        private void AddData()

        {

       

            DataRow dRow = namesDataTable.NewRow();

            dRow["Name"] = "Name 1";

            dRow["Date"] = new DateTime(2001, 12, 01);

            namesDataTable.Rows.Add(dRow);

 

            dRow = namesDataTable.NewRow();

            dRow["Name"] = "Name 2";

            dRow["Date"] = new DateTime(2001, 12, 04);

            namesDataTable.Rows.Add(dRow);

 

            dRow = namesDataTable.NewRow();

            dRow["Name"] = "Name 3";

            dRow["Date"] = new DateTime(2001, 12, 29);

            namesDataTable.Rows.Add(dRow);

 

            dRow = namesDataTable.NewRow();

            dRow["Name"] = "Name 4";

            dRow["Date"] = new DateTime(2001, 12, 13);

            namesDataTable.Rows.Add(dRow);

 

            dRow = namesDataTable.NewRow();

            dRow["Name"] = "Name 5";

            dRow["Date"] = new DateTime(2001, 12, 21);

            namesDataTable.Rows.Add(dRow);

 

            namesDataTable.AcceptChanges();

        }

 

        private void InitForm()

        {

            this.Size = new Size(500, 500);

            grid.Size = new Size(350, 250);

            grid.TabStop = true;

            grid.TabIndex = 1;

            this.StartPosition = FormStartPosition.CenterScreen;

            this.Controls.Add(grid);

        }

        [STAThread]

        public static void Main()

        {

            MyForm myForm1= new MyForm();

            myForm1.ShowDialog();

        }

    }

}

 

 

WPF之Datagrid表头样式的修改 WPF的dataGrid控件表头样式设置,包括表头居中、换行、背景色。 阅读详情

相关推荐

ASP.NET中DataGrid控件的使用

在学习ASP.NET的过程中很长一段时间对DataGrid控件的使用不甚了解,在晚上找到的一些essay也并不系统,这篇文章总结了我对DataGrid基本使用的一些理解,希望能对刚接触asp.net的朋友有一些帮助。 这篇文章主要包括三个主要内容:1,  DataGrid绑定数据的实现2,  DataGrid实现分页功能3,  DataGrid实现数据编辑功能文章中的示例在Visual Studi

drummery的专栏 6415

WPF 中DataGrid控件显示和设置数据

一、基础知识 1、DataGrid控件:用来显示数据的控件,从对象集合中获取信息并在具有行和单元格的网格中显示信息。每行和单独的对象相对应,并且每列和对象的某个属性相对应。 2、在DataGrid 中同时包含“自动生成列”与“用户自定义列” 由属性AutoGenerateColumns控制。 <DataGrid Name="dataGrid1" AutoGenerateColumns...

灰太狼的小秘密 1万+

【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

愚公智库 5万+

VS2010 Win7 64位 C++ MFC DataGrid绑定实例

纠结了几天的DataGrid绑定问题今天终于能跑出来了。我下载别人的代码,都可以跑, 因为我是用VS2010 Win7 64位 的环境来学习 C++ MFC的,网上找的资料大都是VC6.0正面的, 我下载的DataGrid例子都可以跑出来,一到我自己写就出错了。 后来我按照如下方法就可以了。文章最后有实例下载 1:新建一个MFC应用程序:DataGridDemo 2:选择基于对话

fddqfddq的专栏 1万+

WPF DataGrid 控件功能全解

本文还有配套的精品资源,点击获取 简介:在.NET Framework的WPF中,DataGrid是核心控件之一,用于展示和编辑表格数据。本文深入解析DataGrid的强大功能集,涵盖布局定制、数据绑定、行/列操作、排序与筛选、编辑与验证、选择与多选、分页与虚拟化、事件处理、行细节模板以及社区扩展功能,帮助开发者构建高效的数据展示应用。 1. WPF DataGr...

weixin_34640289的博客 2690

AGV避坑指南:海康控制系统与Modbus设备对接的那些‘坑’

本文深入解析海康AGV控制系统与Modbus设备对接中的常见问题及解决方案,涵盖通信协议对接、信号干扰、硬件层问题和软件优化策略。通过真实案例和实用技巧,帮助工程师规避典型陷阱,提升系统稳定性和效率。

l3m4n的博客 740

WPF DataGrid控件高级功能实战:从数据绑定到样式定制

本文深入探讨了WPF DataGrid控件的高级功能,从数据绑定到样式定制,提供了全面的实战指南。文章详细讲解了如何使用ObservableCollection实现动态数据更新,利用CollectionViewSource进行数据分组与排序,并通过DataGridTemplateColumn自定义列模板以嵌入按钮、进度条等复杂控件。此外,还介绍了基于数据触发器的条件格式化、斑马纹样式实现,以及编辑验证、UI虚拟化等高级交互与性能优化技巧,帮助开发者构建专业、高效且用户体验良好的WPF桌面应用界面。

n8m7b6v5c4的博客 924

CMOS传输门实战:如何用模拟开关优化你的电路设计(附常见问题排查)

本文深入探讨了CMOS传输门在电路设计中的实战应用与优化策略。文章从核心参数选型入手,详细分析了导通电阻、电荷注入等关键特性对电路性能的影响,并提供了多路复用器构建、精密电路应用等实战架构。同时,重点分享了PCB布局、电源去耦的工程细节,以及开关不导通、信号失真、高频性能不足等常见问题的系统性排查指南,旨在帮助硬件工程师充分发挥CMOS模拟开关的效能,提升电路设计的可靠性与精度。

js777的博客 451

通过绑定修改DataGrid的Column的Visibility

 问题:因为DataGridColumns不是可视树的一部分,他们不能使用datagrid的datacontext。 解决方法1:代理类 public class BindingProxy : Freezable { #region Overrides of Freezable protected override Freezable

xiudou_123的专栏 3119

postman响应体:“msg“: “请求缺失签名Sign“、 “msg“: “请求缺失时间戳“

请求标头有Sign、Timestamp,但是直接将网址复制到postman时,Headers没有自动生成这两个参数,所以运行时会报错。

m0_46862648的博客 1706

实践指南——【SPSS操作解析】线性混合效应模型在重复测量数据中的应用

本文详细解析了线性混合效应模型在重复测量数据分析中的应用,并提供了SPSS操作指南。文章阐述了该模型如何通过区分固定效应与随机效应,有效处理数据非独立性和缺失值问题,从而获得更可靠的统计推断。

oo7890的博客 551

DataGrid 控件在VB的详细使用

使用 DataGrid 控件    DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了DataGrid 控件的 DataSource 属性后,就会用

JellyLv的专栏 1万+

浅谈车联网概述-1

车联网技术目前在车企中应用广泛,车联网通过车载传感器、无线通信等技术,能够将车辆上百的传感器数据上传至云端,当前智能网联车辆可以理解为一个“大号”手机。

Hello, World! 新能源汽车智能网联工程师,分享日常工作思考。 559

WPF之DataGrid应用

前几天打算尝试下DataGrid的用法,起初以为应该很简单,可后来被各种使用方法和功能实现所折磨。网络上的解决方法太多,但也太杂。没法子,我只好硬着头皮阅览各种文献资料,然后不断的去尝试,总算小有成果。因此,把我学到的和大家分享一下,相信这篇文章会让你再很短的时间内学会DataG

sanjiawan的专栏 9万+

陷波滤波器设计以及Simulink仿真

离散型陷波滤波器设计以及simulink仿真

hmq252198885的博客 3166

AI测试:手把手教你用AI做Web自动化测试「喂饭教程」

本文介绍了基于MCP协议和使用 mcp-use + playwright-mcp 构建智能Web自动化测试框架的实践方法。通过整合大语言模型的理解能力与测试工具可靠性,该方案支持用自然语言描述测试流程,自动转换为可执行的测试步骤,提升测试效率,支持复杂场景和多步骤流程,为自动化测试提供了新思路。

blues_C的博客 1281

数据绑定和控件的介绍

数据绑定和控件的介绍 当微软公司开发出窗体控件和网页控件时,它就拼命的实现数据绑定.当时还是使用的是vb,他们就进行了大篇幅的功能程序编辑. 最有效的数据绑定不是我们说的dataset,而是对象,结构和对象集.数据绑定有个显著的特点:网页中实现数据绑定的控件,我们不要对它进行其他的操作.数据绑定后只有读的操作,没其他的操作,也就是说,控件把数据源的信息拿过了,只是用用的,不能操

soo63cg 627

SAP 关于替代料物料混用问题处理方案简介

电子料很多都是需要进行替代的,并且需要考虑当A物料库存不足时,需要考虑B物料的库存来满足需求,当需求不满足的时候也需要考虑物料的价格因素,同时考虑价格低的物料进行采购。3、还遇到过比较奇葩的处理替代料的解决方案就是将SAP系统中的需求数据用接口的方式全部传输到外围系统,同时还将所有物料的库存信息都通过接口的方式传输到外围系统中,然后通过外围系统进行替代料逻辑的处理,然后在回写回SAP更改BOM中的优先级,然后在重新下单,貌似解决了替代料的问题,但是好像又没有解决。时间:2024-01-27。

我小时候很黑的博客 2350

DataGrid控件的使用(VB)

使用 DataGrid 控件     DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了DataGrid 控件的 DataSource 属性后,就会

wwwcs59的专栏 2201

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WPF中, 如何将控件的触发事件绑定到ViewModel

在DataGrid 等控件中, 有很多这种带闪电符号的触发事件. 如果用传统的事件驱动, 则直接在后台中建立 一个private PropertyChanged(Sender s, EventAgars Args) 即可. 但是如果需要绑定到ViewModel的话? 应该怎么做? 带闪电符号的触发事件 实现viewModel绑定前端触发事件的写法: <DataGrid x:Name="myDataGrid" AlternationCou

helldoger的博客 3974

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

怎么在绑定后动态改变DataGrid中的内容

在应用中,很多时候需要在绑定以后去修改DataGrid的呈现,比如(1)当数据符合一定的条件需要修改它的呈现方式(2)将数据库中的逻辑值(0,1)变成男女来呈现等等大致有2种方法来实现上述操作(1)在ItemDataBound中修改值(2)在绑定的时候用一个函数进行过虑同样,数据库按照 http://www.cnblogs.com/lovecherry/archive/2005/03/25/125

johncools的博客 1126

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 替换JAVA Doc的样式表
下一篇: 令人费解地Datagrid。
blues-star
博客等级 码龄26年 8粉丝 78原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值