0

我正在尝试创建一个循环,该循环遍历我的 groupbox 中的所有控件,并找到其中包含文本的每个控件并将 tabstop 属性设置为 false。但是某些控件的 tabstop 属性必须始终为 true,即使控件中有文本也是如此。

这是我的代码:

    foreach (Control c in deliveryGroup.Controls)
    {
        if (c is Label || c is Button)
        {
            c.TabStop = false;
        }
        else
        {
            if (!string.IsNullOrEmpty(c.Text))
            {
                c.TabStop = false;
            }
            else if (c.Name == "cmbPKPAdrID")
            {

            }
            else if (c.Name.ToString() == "cmbPKPType")
            {
                c.TabStop = true;  <<------- never enters here
            }
            else if (c.Name.ToString() == "dtpPKPDate")
            {
                c.TabStop = true;  <<------- never enters here
            }
            else
            {
                c.TabStop = true;
            }
        }
    }

我的问题是我的程序运行,但从未运行到我用箭头标记的代码。它跳出并将 tabstop 属性设置为 false,即使我希望它在控件具有特定名称的情况下将其设置为 true。

我究竟做错了什么?

4

1 回答 1

2

我猜那行代码

if (!string.IsNullOrEmpty(c.Text))

正在为您不想设置TabStop为 false 的控件执行,并且该控件当前包含一些文本。

要解决此问题,请重新排序测试,如下所示:

foreach (Control c in deliveryGroup.Controls)
{
    if (c is Label || c is Button)
    {
        c.TabStop = false;
    }
    else
    {
        if (c.Name == "cmbPKPAdrID")
        {

        }
        else if (c.Name == "cmbPKPType")
        {
            c.TabStop = true;
        }
        else if (c.Name == "dtpPKPDate")
        {
            c.TabStop = true;
        }
        else if (!string.IsNullOrEmpty(c.Text))
        {
            c.TabStop = false;
        }
        else
        {
            c.TabStop = true;
        }
    }
}

您可以简化为:

foreach (Control c in deliveryGroup.Controls)
{
    if (c is Label || c is Button)
    {
        c.TabStop = false;
    }
    else
    {
        if (c.Name == "cmbPKPAdrID")
        {

        }
        else if (c.Name == "cmbPKPType")
        {
            c.TabStop = true;
        }
        else if (c.Name == "dtpPKPDate")
        {
            c.TabStop = true;
        }
        else
        {
            c.TabStop = string.IsNullOrEmpty(c.Text);
        }
    }
}
于 2013-06-17T08:50:08.343 回答