datagridview java_仅更新datagridview中的一个单元格

这篇博客探讨了在Java中使用DataGridView时遇到的问题。作者创建了一个Watch Window,从Serial Port获取数据并在DataGridView中显示。一个Timer Event每500ms更新Value列。当用户在Type列的ComboBox中选择数据类型时,Timer Event可能会干扰选择过程。作者寻求解决方案,以防止在用户未完成选择前由Timer Event自动刷新ComboBox。问题在于读取ComboBox的当前值时,它返回默认值而不是实际选定的值,这可能与多线程访问DataTable有关。
摘要由CSDN通过智能技术生成

我正在编写一个Watch Window,它从 Serial Port 获取数据,并在 DataGridView 中显示变量info / value . 我有一个 Timer Event ,每隔500毫秒触发一次,并为每一行更新 Value 列 . 用户可以从ComboBox中选择Data Type ,这样他/她可以观察从变量的行值转换的实际值 .

当我单击Type列中的 ComboBox 时,将鼠标指针指向与所选 Type 不同的 Type 然后稍等一下(超过500ms), Timer Event 会使 Combobox 自动将选择带到SelectedIndex . 我需要将鼠标移动到另一个区域并返回到我想要选择的 Type 并在Timer事件自动刷新之前选择它 .

我怀疑的是,我只是在_12677中更改一个单元格(值),但我想它会刷新整行 . 所以,如果我没有在 Timer Event 触发之前点击我想要选择的类型,它会自动选择当前的SelectedItem . 如果我不想让它刷新,直到我点击那里并手动选择其中一个,我怎么能防止刷新ComboBox?

这是我的 DataTable 和 DataGridView 绑定:

BindingSource SBind = new BindingSource();

DataTable WatchDataTable = new DataTable();

public WatchWindowForm()

{

InitializeComponent();

initializeDataTable();

initializeConfigPanel();

}

private void initializeDataTable()

{

/* Create the DataTable with the same column properties */

WatchDataTable.Columns.Add(new DataColumn("varName"));

WatchDataTable.Columns.Add(new DataColumn("varSize"));

WatchDataTable.Columns.Add(new DataColumn("varValue"));

WatchDataTable.Columns.Add(new DataColumn("varAddress"));

WatchDataTable.Columns.Add(new DataColumn("varType"));

WatchDataTable.Columns.Add(new DataColumn("varDelete"));

/* Bind the DataTable to the DataGridview (varTable_dgv) */

SBind.DataSource = WatchDataTable;

varTable_dgv.DataSource = SBind;

}

这是我的 Timer Event :

private void WatchTimerEvent(object sender, EventArgs e)

{

foreach(DataRow dr in WatchDataTable.Rows)

{

/* Search the database using the "Name" cell in the row

and find the corresponding local variable */

Var_t var = DataBase.LiveVariableDatabase.Find(x => x.name == dr["varName"].ToString());

/* Get the new value of the variable

and write it to the "Value" cell in the DataGridView */

dr["varValue"] = DataTypes.GetTypedVariable(var);

}

}

Edit: 我意识到当我尝试读取Type ComboBox的当前值时,它会读取默认值 . 但是如果我尝试从 button click 读取当前值,它会正确读取当前值 . 我们可以假设从不同的线程访问DataTable之间存在差异吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值