2011-04-28 77 views
3

我正在处理涉及数据输入的项目。在线休息事件

表看起来是这样的:dateTimeenumtextenumval1val2textenum;

val1val2之外的所有数值都只输入一次,并添加到每个val1 val2对的表中。 Val1val2对于每一行条目都是不同的,它们都是条形码。

我期望尽可能提高效率,所以我想知道是否有方法在进入Val1/2时进行DGV更新(其余vals当前存储为变量在object[])。我使用的是标准的条形码扫描器,所以我尽管可以让它在扫描条形码后输入扫描仪输入的“linebreak”上的值,所以我基本上正在寻找“scanner_LineBreak”事件或其他...

所以我已经超越了这个问题......现在....我需要将所有数据写入DGV中的文本/ excel/xml/whichevertheheck文件...坏结构我知道......可能只是重来。任何方式,我已经创建了一个空的数据集,并清空数据表和一个空的数据行(使用object[]填充填满表的行填充集),我现在试图输入所有的数据到空dataTable我可以将它添加到数据集,以便我可以将数据写入XML。不用说这不起作用。我尝试使用XmlSerializer,但它导入到Access和/或IE时出错。因此,请回到方框1 ...有没有办法从DGV填充DS,或者是否有方法仅使用DGV数据编写任何文档。 注:DGV = DataGridView

UPDATE

思考了一会儿,我意识到,我可以做一个计数器增量为每个字符与TextChanged事件进入并从那里,我一定会想要的东西后, ...去图...

int counter = 0; 
private void textbox1_Textchanged(obj sender etc) 
{ 
    counter++; 

    if (counter % 10 == 0) 
    { 
     //shift focus to other textbox then do same to "save" values 
    } 
} 

回答

1

根据我的经验,大多数条形码扫描仪被视为键盘输入。数字后面会出现一个控制字符(通常是CRLF或选项卡,但您需要检查扫描仪以查看它使用的是什么字符)。然后,您可以使用KeyDown或TextChanged事件查看输入,并且如果它是控制字符,则执行更新逻辑。

+0

是的,尝试了textchanged事件,但它停止输入的第一个字符。我目前正在通过输入所有数据来解决这个问题,只有在全部收集后才添加到表中。这种方式应该更高效。非常感谢答案,但我会看看KeyDown – Dani 2011-04-28 09:21:43

+0

项目已完成...精美的作品。我如何关闭这个问题/线程? – Dani 2011-04-29 12:07:36

+0

不错的工作!只需在答案上点击复选标记标记回答的问题即可。 – ljkyser 2011-04-29 13:50:53