gpt4 book ai didi

.net - 实时数据 GridView ?

转载 作者:行者123 更新时间:2023-12-01 11:55:17 28 4
gpt4 key购买 nike

我正在寻找说明如何使用数据 GridView 显示存储在业务对象中的快速变化数据的教程或示例。这是一个例子:假设我有以下类(class):

public class StockPosition    
{
public string Ticker;
public double CurrentPrice;
public double CurrentPosition;
public double CurrentValue;
}

public class CustomerPortfolio
{
public string Name;
public double TotalValue;
public IList<StockPosition> StockPositions;
}

现在,我有一个在 gui 线程之外运行的线程,它接收头寸和价格更新,并更新 CurrentPrice、CurrentValue 和 TotalValue 字段。这些更新可能每隔几毫秒发生一次。

屏幕只需要每 250 毫秒显示一次更新。
我还想检查哪些单元格发生了变化。我想知道哪些单元格发生了变化,以便特定单元格在几分钟内获得新颜色。例如,如果第 5 列第 2 行中的数据已更改,则该单元格会更改颜色几秒钟,其他任何已更改的单元格也会更改颜色。这基本上是一个实时应用程序,用于显示发生的变化。
非常感谢

最佳答案

要支持此功能,您应该使用 WinForms 的数据绑定(bind)功能自动为您完成大部分工作。

  1. 如果您还没有,您应该使用 BindingSource使用设计器将网格中的列绑定(bind)到业务对象。简而言之:

    一个。 创建项目数据源 请参阅:http://www.telerik.com/help/openaccess-orm/openaccess-tasks-howto-object-data-source.html

    将 DataGridView 的 DataSource 属性设置 为该数据源。这将自动创建一个 BindingSource在您的表格上(在设计器的下托盘中)。它还会自动为每个属性创建一个列,然后您可以根据需要对其进行修改。

  2. 您的业务对象类应该实现 INotifyPropertyChanged 。有关如何执行此操作的示例,请参阅 http://msdn.microsoft.com/en-us/library/ms743695.aspx .通过这样做,DataGridView 将在后台线程更改业务对象时自动更新单元格。

  3. 设置.DataSource BindingSource 的属性为 BindingList<YourBusinessObject> .在您的代码中,您应该在此 BindingList 中添加和删除项。通过这样做,DataGridView 将在列表更新时自动在网格中添加和删除行。

还有两件事:

  1. 支持“嘿看!”颜色变化功能,您可能需要更深入地挖掘。本质上,您表单中的代码应该监视 PropertyChanged列表中每个项目的事件。引发事件后,您将需要找到 DataGridViewRow谁的.DataBoundItem property 等于您的 Business Object 上更改的属性,然后找到绑定(bind)到已更改属性的单元格。一旦找到要“闪烁”的单元格,就可以将该单元格添加到要临​​时突出显示的单元格列表中,更改 CellStyle因此。最后,您将需要一个计时器来定期清除我们或修剪此列表,将 CellStyle 恢复为原始样式。
  2. 如果在后台线程上更新项目,您可能会遇到线程问题BindingList .您可以通过将 BindingList 替换为 ThreadedBindingList 来解决此问题.请参阅:How do you correctly update a databound datagridview from a background thread .

关于.net - 实时数据 GridView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7869040/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com