添加TextBoxes到列表

时间:2014-05-23 17:30:09

标签: c# winforms list textbox

我正在尝试将一组文本框添加到列表中。我不断收到错误,无法从'System.Windows.Forms.TextBox'转换为'Microsoft.Office.Interop.Excel.TextBox'。不知道为什么我收到此错误。我需要添加演员吗? 这是我的代码。我要添加的文本框位于getValues中。我没有使用Windows窗体,所以这个错误对我来说是一个谜。

class DiagnosticsExcelFile: ConfigForm
{
    string fileName = "";
    private ConfigForm configForm;
    Excel.Application xlApp = null;
    Excel.Workbook xlWorkBook = null;
    Excel.Worksheet xlWorkSheet = null;
    List<TextBox> list = new List<TextBox>();

    public DiagnosticsExcelFile(ConfigForm config)
    {
       fileName = "Z:\\UCA\\Diagnostics.xlsx";
       this.configForm = config;
       this.list.Add(this.configForm.HighOffSetX); // get error here

    }

    private void getValues()
    {
      this.configForm.HighOffSetX.Text = "5.0";  
      this.configForm.HighOffSetY.Text = "5.0";  
      this.configForm.HighOffSetZ.Text = "5.0";  

    }
 }

5 个答案:

答案 0 :(得分:3)

定义您的列表,如:

List<System.Windows.Forms.TextBox> list = new List<System.Windows.Forms.TextBox>();

目前,您的List指的是来自Microsoft.Office.Interop.Excel.TextBox的TextBox。

Microsoft.Office.Interop.Excel=System.Windows.Forms都有一个班级TextBox,因为您还没有显示您的使用指令,我认为您已经

using Microsoft.Office.Interop.Excel;

并且您没有System.Windows.Forms的使用指令,因此您的代码正在考虑您的List包含来自Office Interop的TextBox。 (顺便说一句,如果你有两个引用,那么你会得到一个错误的模糊引用TextBox

通过明确定义System.Windows.Forms.TextBox,您的错误就会消失。

答案 1 :(得分:3)

using TextBox = System.Windows.Forms.TextBox;

我通常认为这种方法效率最高。 它不需要很多代码更改,并且可以保持简短的线路。

答案 2 :(得分:1)

您没有指定完整的命名空间,但您可能有:

using System.Windows.Forms; 
using Microsoft.Office.Interop.Excel;

在你的代码文件中。 编译器无法分辨您的意思是哪个TextBox。您可以完全限定每个类型名称,或者为using s。

之一添加别名
using xl = Microsoft.Office.Interop.Excel;

然后,您将Excel文本框称为xl.TextBox。仅指定TextBox将为您提供您期望的System.Windows.Forms

答案 3 :(得分:0)

您正在从System.Windows.Forms.TextBox隐藏TextBox类型(可能使用TextBox = Microsoft.Office.Interop.Excel.TextBox)。

尝试使用以下命名声明您的列表:

List<System.Windows.Forms.TextBox> list = new List<System.Windows.Forms.TextBox>();

答案 4 :(得分:0)

您的定义是正确的。将新成员添加到列表时会发生此问题。请尝试以下方法:

list.Add(HighOffSetX);

此时你不需要整个“这个”的东西。