【问题标题】:How to alter between to different fields with a checkbox?如何使用复选框在不同字段之间进行切换?
【发布时间】:2019-06-19 10:36:10
【问题描述】:

我正在用 C# 设计一个 Windows 窗体,并且有一个名为“电子交付”的复选框。在它下面是一个“电子邮件地址”字段。现在我想添加仅在选中复选框时电子邮件字段才可见的选项。 如果未选中复选框,我想在那里有一个不同的字段。 我知道如何在代码方面处理这个问题,使事物可见/隐藏,但是如何将字段放在表单中?我应该把一个放在另一个上面吗?然后我将无法访问下面的内容来更改它的属性。 还是我应该只保留一个文件并在代码中更改它的名称?

【问题讨论】:

  • 所以我只能在表单中放置一个字段,然后将其隐藏并从代码内部创建一个新字段,然后在它们之间更改可见性?
  • 差不多。您可以在设计时添加控件(使用设计器),然后在运行时切换它们的可见性,但这可能会使您的表单在设计器中查看时看起来很乱,因为您的控件彼此重叠。 ControlCollection 允许您通过代码动态地做同样的事情,可能是更整洁的解决方案

标签: c# winforms


【解决方案1】:

您可以将控件放在 FlowLayoutPanel 控件中。 FlowLayoutPanel 控件以水平或垂直流动方向动态排列其内容。

【讨论】:

  • 不确定这对我有什么帮助。
  • 有很多方法可以完成你想要的,但这里的想法是让 FlowLayoutPanel 在你显示和隐藏某些控件时自动重新排列控件布局。
  • 哦,所以我会把FlowLayoutPanel中的两个字段放在不同的位置,然后会自动移动到正确的位置?
  • 没错。 FlowLayoutPanel 将可见控件保持在一起,消除隐藏控件可能留下的空白。
【解决方案2】:

您可以按照您的建议将它们一个放在另一个之上。您说您不想这样做,因为这会使选择控件的属性变得困难。

您可以从 Visual Studio 属性部分的组合框下拉菜单中选择一个控件。

【讨论】:

  • 我认为那是一种糟糕的编程风格
【解决方案3】:

您应该根据需求创建两个不同的面板并添加对象。在复选框选中事件中放置可见和隐藏代码之后。 试试它会工作的面板。 您可以将面板与所有对象一起简单移动,这非常容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2015-02-23
    • 2020-11-15
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多