【问题标题】:Separate radio button groups in TableLayoutPanel在 TableLayoutPanel 中单独的单选按钮组
【发布时间】:2015-10-24 01:16:09
【问题描述】:

我有一个 TableLayoutControl,我用单选按钮动态填充它。有四列。我希望第 1-3 列的单选按钮在每行中形成组,第 4 列中的单选按钮形成一个组。换句话说,每行中的水平组和最后一列中的垂直组。我该怎么做?

【问题讨论】:

  • 不,这是不可能的。不幸的是,radiobutton 没有“组”属性。当然,分组也应该对用户清楚地可见.. - 所以你需要添加两个面板来代替..
  • 我想我不需要两个面板,而是每行一个面板。
  • 是的,我没抓到四行..
  • 如果您希望 RadioButtons 保持与以前相同的“网格”位置,我认为您必须添加面板并使它们“跨越”行/列,然后添加 TableLayoutPanels 在每个面板中 并将它们设置为单独的行/列以放入您的 RadioButtons。如果您不需要它们的位置那么严格,请按照 Backs 的建议使用 FlowLayoutPanels。
  • 我完全按照你说的做了,而且效果很好。至于垂直组,则无需做任何事情,因为主面板将它们分组。谢谢大家的帮助。

标签: c# winforms radio-button tablelayoutpanel


【解决方案1】:

假设您知道每个RadioButton 的哪一行和哪一列(例如,在创建一个名称时,它 rdb2_3 表示它属于TableLayoutControl 的第 2 行第 3 列),将CheckedChanged 事件添加到所有它们中,例如:

    rdb.CheckedChanged += new EventHandler(rdb_CheckedChanged);

    void rdb_CheckedChanged(object sender, EventArgs e)
    {
        if (((RadioButton)sender).Checked)
            // Check if this RadioButton belong to column 4th so it belong to the column group
            if (((RadioButton)sender).Name.Substring(((RadioButton)sender).Name.Length - 1) == "4")
            {
                // Set Checked = false for all RadioButton in column 4 except this one
            }
            else
            {
                // Set Checked = false for all RadioButton in this RadioButton's row 4 except this one
            }
    }

【讨论】:

    【解决方案2】:

    我认为,最好的方法是在表格的每个单元格中放入一些分组控件(panel、groupBox、flowLayoutPanel...)并将单选按钮添加到该组中。

    【讨论】:

    • 我想我需要将列数减少到两列,并在第一行的每个单元格中放置一个面板,然后为每个面板添加三个单选按钮。
    • @grzegorz 建议您使用 FlowLayoutPanel 进行动态添加控件 - 它非常适合控件
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2017-07-24
    • 2016-01-19
    • 1970-01-01
    • 2019-10-04
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多