【问题标题】:C# How to loop through all TextBox controls within an instance of user defined class?C#如何遍历用户定义类的实例中的所有TextBox控件?
【发布时间】:2017-01-08 16:37:15
【问题描述】:

我有一个用户定义的类:

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

在另一个地方,在 UserDefined 类的 objUserDefined 实例中

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

如何在winForm实例objUserDefined中找到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;
}

【问题讨论】:

  • 有什么问题?
  • SLate,问题是从 objUserDefined.svdWinForm 中找不到控件。其实svdWinForm上有4个TextBox控件,这是一个嵌入在UserDefined类中的winForm类的实例。
  • 他们可能在其他面板中。
  • 你可以搜索类似“所有winform控件”stackoverflow.com/questions/2735190/…
  • 问题在于 winForm 嵌入在 userDefined 类中。 objUserDefined 是 userDifined 类的一个实例,而不是 winForm 的立场。找不到userDefined类中嵌入的winForm(svdWinForm)的控件。这很奇怪!

标签: c# winforms


【解决方案1】:

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

 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;
    } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2011-06-06
    • 1970-01-01
    相关资源
    最近更新 更多