将两个不同类型的值从一个类返回到另一个类,并更新GUI
本文关键字:返回 另一个 更新 GUI 一个 两个 同类型 | 更新日期: 2023-09-27 17:57:30
现在,我正努力用表单将两个不同类型的值从我的一个辅助类返回到我的主类。
因此,我将xls文件的路径传递给我的方法。然后我将xls文件中的值加载到2D数组中。每一行加载后,我都会更新变量百分比。这个变量告诉我加载过程的百分比。现在我想把这个值返回到我的主类,这样我就可以更新我的一个标签了。
加载过程完成后,我将返回已加载的数组。那么在返回2D数组时如何更新标签呢?
这是我的助手类及其方法:
class LoadReflexTime
{
Excel.Application xlApp = new Excel.Application();
Form1 frm = new Form1();
Label percenta;
int percent;
string[,] reflexTime1;
public string[,] reflexTime(string cesta )
{
// LOAD XLS to ARRAY
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(cesta);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
reflexTime1 = new string[rowCount, colCount];
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
string str = xlRange.Cells[i, j].Text;
reflexTime1[i - 1, j - 1] = str;
}
percent = ((100 * i) / rowCount);
// UPDATE LABEL (worked in my main class)
percenta.BeginInvoke(new Action(() => percenta.Text = percent.ToString()+"%"));
}
MessageBox.Show("Súbor načítaný");
return reflexTime1;
}
您可以定义一个新的类来包装您想要返回的两个变量:
public class ReturnValue
{
public string[,] Array { get; set; }
public double Percent { get; set; }
}
然后,您可以重新定义方法以返回该类型:
public ReturnValue reflexTime(string cesta )
{
ReturnValue output = new ReturnValue();
// LOAD XLS to ARRAY
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(cesta);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
output.Array = new string[rowCount, colCount];
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
string str = xlRange.Cells[i, j].Text;
output.Array[i - 1, j - 1] = str;
}
output.Percent = ((100 * i) / rowCount);
}
MessageBox.Show("Súbor načítaný");
return output;
}
然后两个值同时可用。