想要在datagridview填充数据时显示动画(Gif文件)吗? [英] Want to show animation (Gif File) while datagridview is filling with data ?

查看:67
本文介绍了想要在datagridview填充数据时显示动画(Gif文件)吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





在我的项目中我正在使用Datagridview加载excel文件并在Datagridview中显示它。

加载excel文件时,需要花费更多时间。我需要以Gif文件格式显示带有Please Wait消息的图片框。使用backgroundWorker工具,我写了一些编码。但它不起作用。任何人都可以使用MultiThread Concept帮助我正确编码。





这里是我的代码



hi ,

In My Project I''m Using a Datagridview to load a excel file and show it in Datagridview.
While loading a excel file it takes more time so in between . I need to display a picture box with message "Please Wait" in Gif file format . Using backgroundWorker tool, I Wrote some coding . but it doesn''t works . can any one help me with right coding using MultiThread Concept.


here is my code

private void btnLoadData_Click(object sender, EventArgs e)
      {
           BackgroundWorker worker = new BackgroundWorker();

          worker.DoWork += delegate
          {
          Microsoft.Office.Interop.Excel.Application excelApp;
          Microsoft.Office.Interop.Excel.Workbook workbook;
          Microsoft.Office.Interop.Excel.Worksheet worksheet;
          Microsoft.Office.Interop.Excel.Range range;
          excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

          // Opening Excel file
          workbook = excelApp.Workbooks.Open(txtPath.Text, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

          worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets.get_Item(1);
          range = excelApp.get_Range("A1", Type.Missing);
          if (range != null)
          {
              var val = range.Value2;
              var sourceString= val.ToString().Trim();
              var remove="Period";
              var a = sourceString.IndexOf(remove);
              var b = string.Concat(sourceString.Substring(0, a), sourceString.Substring(a + remove.Length));
              var c = b.ToString().TrimStart();

              var remove1 = ":";
              var d = c.IndexOf(remove1);
              var f = string.Concat(c.Substring(0, d), c.Substring(d + remove1.Length));
              var g = f.ToString().TrimStart();

              var remove2 = "to";
              var h = g.IndexOf(remove2);
              var i = string.Concat(g.Substring(0, h), g.Substring(h + remove2.Length));
              var j = i.ToString().TrimStart();

              string sub = j.Substring(0,10);
              string sub1 = j.Substring(12,10);

              textEdit1.Text += Convert.ToString(sub).Trim();
              textEdit3.Text += Convert.ToString(sub1).Trim();
          }
          range = excelApp.get_Range("A2", Type.Missing);
          if (range != null)
          {
              var val1 = range.Value2;
              var sourceString= val1.ToString().Trim();
              var remove="Supplier";
              var a = sourceString.IndexOf(remove);
              var b = string.Concat(sourceString.Substring(0, a), sourceString.Substring(a + remove.Length));
              var c = b.ToString().TrimStart();
              var remove1=":";
              var d = c.IndexOf(remove1);
              var f = string.Concat(c.Substring(0, d), c.Substring(d + remove1.Length));
              var g = f.ToString().TrimStart();
              textEdit2.Text += Convert.ToString(g).Trim();
          }
          range = worksheet.UsedRange;

          int column = 0;
          int row = 0;

          System.Data.DataTable dt = new System.Data.DataTable();
          dt.Columns.Add("Product");
          dt.Columns.Add("Item/Model Code");
          dt.Columns.Add("Item/Model");
          dt.Columns.Add("Qty.");
          dt.Columns.Add("Sales Value");
          dt.Columns.Add("Discount Amt.");
          dt.Columns.Add("Amount");
          dt.Columns.Add("Net Amount");
          dt.Columns.Add("SR Qty");
          dt.Columns.Add("SR Value");
          dt.Columns.Add("SR Discount Amt.");
          dt.Columns.Add("SR Tax Amt.");
          dt.Columns.Add("SR Net Amt.");
          dt.Columns.Add("Total Qty");
          dt.Columns.Add("Total Value");
          dt.Columns.Add("Total Discount");
          dt.Columns.Add("Total Tax");
          dt.Columns.Add("Total Net Value");

          for (row = 5; row <= range.Rows.Count; row++)
          {
              DataRow dr = dt.NewRow();
              for (column = 1; column <= range.Columns.Count; column++)
              {
                  dr[column - 1] = (range.Cells[row, column] as Microsoft.Office.Interop.Excel.Range).Value2.ToString();
              }
              dt.Rows.Add(dr);
          }

          //workbook.Close();
          //excelApp.Quit();

          // Binding to DataGridView
          dataGridView1.DataSource = dt;
          };

          worker.RunWorkerCompleted += delegate
          {
              pictureEdit1.Visible = false;
              worker.Dispose();
              btnLoadData.Enabled = true;
          };

          //backgroundWorker1.RunWorkerAsync();
          worker.RunWorkerAsync();
      }

推荐答案

使用项目模板。数据网格中的图像项模板。使用通用的hangler填充它。谷歌一下。有很多这样的例子
Use item template. image item template in data grid. populate it using a generic hangler. google it. there are lots of such examples


http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(EHINVALIDOPERATION.WINFORMS.ILLEGALCROSSTHREADCALL )& rd = true [ ^ ]


这篇关于想要在datagridview填充数据时显示动画(Gif文件)吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆