【问题标题】:Unable to see other text boxes看不到其他文本框
【发布时间】:2015-11-18 16:43:09
【问题描述】:

我正在开发一个 Windows 窗体应用程序。我的一个要求是在标签页内单击按钮创建新的文本框。这是我在按钮(btnAdd)点击事件中所做的:

        TextBox textBox1 = new TextBox();
        textBox1.Name = DateTime.Now.ToString() + "textbox"; 
        textBox1.Text = DateTime.Now.ToString() + "textbox"; 
        textBox1.Size = new Size(200, 30);
        textBox1.Location = new Point(tbpEx.Left + 20, loc);
        tbpEx.Controls.Add(textBox1);
        loc = textBox1.Height + 20 ;

这样我就可以得到一个在另一个之下的文本框。但是我点击了按钮,文本框被添加了,但是在 2 个文本框之后就没有更多的文本框可见了。

我试图在计算 tbpEX 中控件的表单上放置另一个按钮 (btnCnt)表单)。在此按钮中单击我有此代码:

        foreach (Control c in tbpEx.Controls)
        {
            lblMsg.Text = lblMsg.Text + c.Name + ":" + c.Parent.Name + Environment.NewLine;
        }

我已经点击了 btnAdd 7 次,但我只能看到 2 个文本框。但是,当我单击 btnCnt 时,lblMsg 会显示 7 个文本框。

为什么我看不到其他文本框?

【问题讨论】:

  • 也许它们只是不可见,因为例如父级 (tbpEx) 太小而无法全部容纳? :)
  • 添加两个文本框后,标签页(垂直)有很多可见区域。而且标签页设置为滚动,所以即使不可见区域很小,也应该请允许我滚动。
  • 可能有,但是如果 tbpEx 的大小被明确设置,那么它不会扩展以适应所有这些,尝试为 tbpEx 设置一个停靠以覆盖整个表单,或者只是设置它的大小比你想要适应的按钮大得多,你也可以尝试减小按钮的大小,看看是否会有更多的按钮出现:)

标签: c# .net windows-applications tabpage


【解决方案1】:

您正在使用这一行将文本框放在另一个上

 loc = textBox1.Height + 20 ;

应该是

 loc = loc + textBox1.Height + 20 ;

【讨论】:

  • 当我这样做时,虽然我点击了 hte btnAdd 11 次,但现在可见的文本框数量只有 6 个。 btnCnt 显示有 11 个文本框。我想要做的是允许用户通过 btnAdd 点击添加尽可能多的文本框,这些文本框应该在另一个下方可见,如果文本框不在标签页区域,那么应该有一个垂直滚动吧。
  • 这是一个不同的问题。您应该发布一个新问题,但有一些提示。您应该将文本框放在一个容器中,如果其内容超出可见区域,该容器会自动添加滚动条。 (AutoScroll = true 和 FlowDirection = TopDown 的 FlowLayoutPanel)
  • @Steve 只是出于好奇,为什么我们不能使用 Tab Page 实现相同的功能。我认为标签页也是一个容器。我一直面临您建议的流布局面板的某些问题。我现在可以看到与我添加的文本框一样多的文本框,但是即使我将 Flow Direction 设置为 TopDown,它们也是水平添加的。我将就此提出一个新问题,因为问题现在不同了。
  • 因为this SO 帖子解决了我的问题,所以我不会提出新问题。通过添加 'FlowLayoutPanel.SetFlowBreak(textBox1,true)' 解决了这个问题。现在,文本框根据需要在另一个下方显示。我仍然不明白为什么在标签页中如果不添加流布局面板就无法实现相同的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
相关资源
最近更新 更多