导入excel数据到datagridview中,读取第一列数据,并通过一个timer进行重复显示,设置一个button,按下第一次,在textbox中开始显示数据,按下button第二次,timer停止,显示出来一个数。按下第三次,timer启动,在textbox中开始显示数据,按下button第四次,timer停止,显示出第二个数,依次类推。如果想实现每次显示的数都不同,应如何做?
(下面是timer的内容)
 private void timer1_Tick(object sender, EventArgs e)
 {
 DataRow myRow = myData[dataIdx];
 string strdata = myRow.ItemArray[0].ToString();
 this.textBox1.Text = strdata;
 dataIdx++;
 if (dataIdx >= myData.Count)
    dataIdx = 0;
 }

解决方案 »

  1.   

    先将excel读到dataset表1,然后在ds中建表2,遍历表一数据到表2,如果表1中某条数据存在,则不写入。保证表2唯一。然后第一次按,绑定datagridview为表1.第二次,从表2依顺序读一个。
      

  2.   

    或者
    先将excel读到dataset表1
    循环表1
    {
    定义变量i记录当前行数(每当在datagridvew中插入行i++)
    遍历datagridview看要录入的信息在datagridview中是否重复
    if 不重复
    {
    datagridview.Rows.add();
    datagridview.Rows[i].cell[0].value = "aa";
    datagridview.Rows[i].cell[1].value = "bb";
    }
    }
      

  3.   

    Random 上限设置成你那一列的行总数,随即显示1到count(column)的某一行,
      

  4.   

    貌似没有说清楚,excel已经导入到了datagridview中,现在是从datagridview中取数,每次取的数不重复。
      

  5.   

    我想这样弄,因为现在是从datagridview中按照列的索引来依次取数,那么如果取出一个数,就把这个数删除同时把索引删除,这个数后面的数的索引全部-1。但是不知道这样怎样实现。
      

  6.   

    很明显,没有导入到datagridview里面,最多只是读到数据集里面去了,
    如果datagridview里面 那么肯定是全部显示的,除非你用select筛选,
      

  7.   

    是全部显示的,现在是另一个界面,一个一个的按顺序显示datagridview中某一列的数据,并且不重复。这个不知道怎样实现。我的想法在5楼,但是不知道如何去做。
      

  8.   

    首先你要定位一个标识列出来,,作为判断是否重复的依据
    然后使用一个 Dictionary<string,string>
    每次显示一个 往 字典里加一个 KEY  判断KEY是否存在  不存在增加,存在就不增加
    同时要每次都查一下 字典里有多少KEY  KEY的数量如果与你EXCEL记录数量相同,提示已经全部展示完
    无可用记录,要么清空字典 重新展示 要么换EXCEL读取同时清空字典
      

  9.   

    不取一个删一个 你不觉得累么?  而且如果全部用完的话   要循环再用  你不就麻烦了?
    你只要做一个东西来区分就行,,,你只要把你取的数  放到字典里 每次查询字典里是否有此KEY
    有就继续找  没有就增加这个KEY 同时展示
      

  10.   

    哥们你的EXCEL导入到DBGRID的代码帖出来我用下?谢谢
      

  11.   

    跟那个没关系的,现在已经正常显示在datagridview里了,这里是没有问题的。