C#如何遍历用户定义类的实例中的所有TextBox控件?

时间:2017-01-08 16:37:15

标签: c# winforms

我有一个用户定义的类:

public class UserDefined
{
   public winForm svdWinForm;
   .....
}

在其他地方,在UserDefined类的objUserDefined实例中

{
    ...
    objUserDefined.svdWinForm=anotherWinform;
    ...
    this.Close();
}

如何在objUserDefined(winForm的一个实例)中找到svdWinForm的TextBox控件?

我使用了以下。但它没有成功。

foreach (Control x in objUserDefined.svdWinForm.Controls)
{
     if (x is TextBox)
        {
            MessageBox.Show("Find a TextBox control!!");
        }
}

例如,对于我的问题,我想循环遍历文本框或其他控件,并将两个对象设置为如下所示。我的问题是如何使用foreach循环简化代码。

/// <summary>
/// Copy a CylinderDimension form to another form
/// </summary>
/// <param name="tgCylinderDimensionsWin">Target form</param>
/// <param name="srCylinderDimensionsWin">Source form</param>
public CopyCylinderDimensionsWin(CylinderDimensionsWin tgCylinderDimensionsWin, CylinderDimensionsWin srCylinderDimensionsWin)
{
    tgCylinderDimensionsWin.rdInnerDiameter.Checked = srCylinderDimensionsWin.rdInnerDiameter.Checked;
    tgCylinderDimensionsWin.rdOuterDiameter.Checked = srCylinderDimensionsWin.rdOuterDiameter.Checked;
    tgCylinderDimensionsWin.txtShellDiameter.Text = srCylinderDimensionsWin.txtShellDiameter.Text;
    tgCylinderDimensionsWin.txtShellLength.Text = srCylinderDimensionsWin.txtShellLength.Text;
    tgCylinderDimensionsWin.txtShellThickness.Text = srCylinderDimensionsWin.txtShellThickness.Text;
    tgCylinderDimensionsWin.txtNumberAdd.Text = srCylinderDimensionsWin.txtNumberAdd.Text;
    tgCylinderDimensionsWin.chTrialLength.Checked = srCylinderDimensionsWin.chTrialLength.Checked;
    tgCylinderDimensionsWin.txtTrialLength.Text = srCylinderDimensionsWin.txtTrialLength.Text;
    tgCylinderDimensionsWin.chExempt.Checked = srCylinderDimensionsWin.chExempt.Checked;
    tgCylinderDimensionsWin.txtTrialLength.Visible = srCylinderDimensionsWin.txtTrialLength.Visible;
    tgCylinderDimensionsWin.lbTrialLength.Visible = srCylinderDimensionsWin.lbTrialLength.Visible;
}

1 个答案:

答案 0 :(得分:0)

我不明白你想要什么,但我希望这段代码可以解决你的问题。

 public List<TextBox> GetTextbox(Form f)
    {
        List<TextBox> txtboxlist = new List<TextBox>();

        foreach (var Control in f.Controls)
        {
            if (Control.GetType() == typeof(TextBox))
            {
                txtboxlist.Add((TextBox)Control);
            }
        }

        return txtboxlist;
    }