`
dzgwt2004
  • 浏览: 167379 次
  • 来自: 浙江杭州
社区版块
存档分类
最新评论

DataGridView增加进度条列

    博客分类:
  • C#
 
阅读更多
1.定义进度条列
class DataGridViewProgressColumn : DataGridViewImageColumn
{

public DataGridViewProgressColumn()
{
this.CellTemplate = new DataGridViewProgressCell();

}
}

class DataGridViewProgressCell : DataGridViewImageCell
{
//public UpdateProcessValue updateValue;

public object progressCellLock = new object();

static Image emptyImage;
static DataGridViewProgressCell()
{
emptyImage = new Bitmap(1, 1, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
}

public DataGridViewProgressCell()
{
this.ValueType = typeof(double);
}

public string ShowText { get; set; } //如果要显示独立的文字而不是百分比,设置此属性。
protected override object GetFormattedValue(object value,
int rowIndex, ref DataGridViewCellStyle cellStyle,
TypeConverter valueTypeConverter,
TypeConverter formattedValueTypeConverter,
DataGridViewDataErrorContexts context)
{
return emptyImage;
}

public new double Value
{
set
{
lock (progressCellLock)
{
try
{
base.Value = Math.Round(value, 2);
}
catch { }
}
}
get
{
return double.Parse(base.Value.ToString());
}
}



protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle clipBounds, System.Drawing.Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
if (value == null)
{
value = "0";
ShowText = "0%";
}
string tValue = value.ToString();
if (tValue == "") tValue = "0";


double progressVal;
try { progressVal = Convert.ToDouble(tValue); }
catch
{
progressVal = 0;
}

float percentage = ((float)progressVal / 100.0f);
Brush backColorBrush = new SolidBrush(cellStyle.BackColor);
Brush foreColorBrush = new SolidBrush(cellStyle.ForeColor);

lock (progressCellLock)
{
base.Paint(g, clipBounds, cellBounds,
rowIndex, cellState, value, formattedValue, errorText,
cellStyle, advancedBorderStyle, (paintParts & ~DataGridViewPaintParts.ContentForeground));

string DrawStringStr = progressVal.ToString() + "%";
if (ShowText != "")
{
DrawStringStr = ShowText;
}

if (percentage > 0.0)
{
//g.FillRectangle(new SolidBrush(Color.FromArgb(163, 189, 242)), cellBounds.X + 2, cellBounds.Y + 2, Convert.ToInt32((percentage * cellBounds.Width - 4)), cellBounds.Height - 4);
g.FillRectangle(new SolidBrush(Color.Green), cellBounds.X + 2, cellBounds.Y + 2, Convert.ToInt32((percentage * cellBounds.Width - 4)), cellBounds.Height - 4);
g.DrawString(DrawStringStr, cellStyle.Font, foreColorBrush, cellBounds.X + 30, cellBounds.Y + 5);
}

else
{
if (this.DataGridView.CurrentRow.Index == rowIndex)
g.DrawString(DrawStringStr, cellStyle.Font, new SolidBrush(cellStyle.SelectionForeColor), cellBounds.X + 30, cellBounds.Y + 5);
else
g.DrawString(DrawStringStr, cellStyle.Font, foreColorBrush, cellBounds.X + 30, cellBounds.Y + 5);
}
}
}
}

 

2.使用
Progress = new DataGridViewProgressColumn();

 C#开发实战1200例(附光盘第Ⅱ卷)(王小科//王军)(清华大学出版社)

分享到:
评论

相关推荐

    c# DataGridView添加进度条

    在某些场景下,我们可能需要在`DataGridView`的某个列中显示进度条,以实时反映任务的执行状态。这就涉及到自定义`DataGridView`列类型和使用进度条控件(如`ProgressBar`)的知识。以下将详细讲解如何实现这个功能...

    在DataGridView中添加进度条

    本文将详细介绍如何在C#中的`DataGridView`控件中添加进度条列。 首先,`DataGridView`控件本身并不直接支持进度条列。为了实现这一功能,我们需要自定义一个用户控件(User Control)来模拟进度条,并将其作为`...

    vb.net DataGridView控件用法合集

    57. DataGridView中显示进度条(ProgressBar) 58. DataGridView中添加MaskedTextBox DataGridView控件用法合集(十二) 59. DataGridView中Enter键按下焦点移至旁边的单元格 60. DataGridView行集合化(Group)

    DataGridView与Excel文件的互导

    3. 遍历`DataGridView`的行和列,将数据写入到Excel工作表的相应单元格中。可以使用`Range.SetValues`方法一次性设置多个单元格的值。 4. 保存Excel文件,使用`Workbook.SaveAs`方法,传入文件路径和文件格式。 5. ...

    DataGridView导出到文本文件简洁VB代码

    - **进度条**:对于大量数据的导出,可考虑增加进度条显示导出进度。 - **日志记录**:记录导出过程中的关键信息,便于后期问题排查。 #### 3. 总结 以上代码提供了一种简洁有效的方式,将`DataGridView`中的数据...

    C#控件使用方法

    在特定列的单元格中根据值显示不同的图片,可以增加界面的直观性和信息量。 57. DataGridView中显示进度条(ProgressBar) 在单元格中展示进度条,用于表示长时间运行的任务的进度,提高用户等待时的体验。 58. ...

    XPTable-winform很强大的表格控件

    1. **进度条列**:XPTable控件允许你在表格的某一列中显示进度条,这对于呈现任务的完成度或资源的使用情况非常有用。你可以动态更新每个单元格的进度条,以便实时反映数据的变化。 2. **图片列**:在表格中添加...

    C#任务管理器(实现cpu使用率以及动态网格)

    这些值会随着时间增加,因此需要通过采样和差分计算得出瞬时使用率。 4. **动态网格显示**:`System.Windows.Forms.DataGridView`控件是C#中用于创建表格布局的工具,非常适合用来展示进程列表。我们可以创建一个...

    winform 分页程序带源码

    - 创建Winform窗口,添加DataGridView控件,设置其AutoGenerateColumns属性为True以自动显示数据列。 - 添加页码和页大小的输入框,用于用户自定义分页参数。 - 添加导航按钮,如Button控件,分别标记为“上一页...

    王牌2_C#_控件查询手册.pdf

    - **行和列操作**:支持增加、删除行;调整列宽、隐藏列等功能。 - **样式定制**:可以自定义单元格样式,如字体颜色、背景色等。 - **交互操作**:提供双击事件、选择事件等交互操作的支持。 - **数据编辑**:支持...

    我的玩具管理系统查看系统

    4. **数据网格视图(DataGridView)**:用于展示玩具的详细列表,包括多列数据,如ID、名称、价格、库存数量等。 5. **按钮(Button)**:用于执行特定操作,如添加、删除、修改玩具记录,或者查询、导出数据。 6. *...

    c#文档和控件

    - 可自定义列类型(如文本列、复选框列等)。 - 支持数据编辑、添加和删除操作。 - 提供灵活的数据呈现方式。 #### 二、BindingSource组件 - **定义**:`BindingSource`组件作为数据绑定的核心组件,它充当数据...

    C#控件查询手册

    - 增减操作:通过上下按钮增加或减少数值。 ##### ListBox控件 - **定义与功能**:`ListBox`控件用于显示一个垂直滚动的项目列表。 - **主要特性**: - 列表显示:显示一个可滚动的项目列表。 - 多选支持:支持...

    C#控件查询手册 (超详细)

    - **自定义列**:可以通过设置`DataGridViewColumn`的属性来自定义列的显示方式,例如隐藏某些列或更改单元格的格式。 - **排序与筛选**:支持对数据进行排序和筛选,使用户能够更容易地查找所需的信息。 - **编辑...

    windows窗体控件

    3. **StatusStrip控件**:通常位于窗口底部,显示应用程序的状态信息,如进度条、提示信息等。 - **特点**:提高用户体验;方便监控程序状态。 4. **ProgressBar控件**:用于显示操作的进度,帮助用户了解当前任务...

    C#全能速查宝典

    2.2.25 SelectedColumns属性——用户选定的列集合 178 2.2.26 SelectedRows属性——用户选定的行集合 179 2.2.27 SelectionBackColor属性——文本在选中时的颜色 180 2.2.28 SelectionColor属性——插入点的文本颜色...

    C#中控件的缩写大全C#中控件的缩写大全

    9. **列表视图**: `lvw` - ListView 控件可以显示多列数据,常用于文件管理器等应用。 10. **掩码文本框**: `mtx` - MaskedTextBox 控件用于限制用户输入格式化的文本,如电话号码或日期。 11. **月份日历**: `cdr` ...

    jQuery EasyUI 1.4.5 版 API 中文.pdf

    5. **1.10.5 ColumnsExtension for DataGrid(列扩展表格)**:增加了对数据表格列的扩展功能。 6. **1.10.6 EditableTree(可编辑树)**:可以编辑树形结构的组件。 7. **1.10.7 DataGridFilterRow(可过滤行的数据...

    C#中控件缩写大全-C#中控件缩写大全

    9. **lvw**: ListView - 列表视图,可以显示多列数据和图标。 10. **mtx**: MaskedTextBox - 格式化文本框,限制用户输入格式化的文本。 11. **cdr**: MonthCalendar - 月历控件,用户可选择日期。 12. **icn**: ...

    C#里边的控件缩写大全

    9. **lvw ListView**:列表视图,支持多种视图模式(如列表、小图标、大图标等),可以包含复选框、图像和多列数据。 10. **mtx MaskedTextBox**:掩码文本框,用于输入符合特定格式的数据。 11. **cdr ...

Global site tag (gtag.js) - Google Analytics