【问题标题】:devexpress RepositoryItemRadioGroup item text clippeddevexpress RepositoryItemRadioGroup 项目文本被剪裁
【发布时间】:2018-12-26 10:27:40
【问题描述】:

我正在对XtraGrid.GridControl 单元格编辑创建一个RepositoryItemRadioGroup

        var radioGroup = new RepositoryItemRadioGroup();

        var radioCtrl = node.ViewControl as IRadioButtonControl;
        if (radioCtrl == null)
            return radioGroup;

        var index = 0;
        foreach (var choice in choices)
        {
            var choiceValue = index.ToString();
            ++index;
            var item = new RadioGroupItem(choiceValue, choice);
            radioGroup.Items.Add(item);
        }

运行时,RadioGroupItem 的文本如果超过一定数量的字符,则会在右侧被剪裁。

如何控制/改变这个控件的绘制?

【问题讨论】:

    标签: devexpress xtragrid


    【解决方案1】:

    我最初会说使用“AutoFit”来完成这项工作,但我在建议之前尝试过它,它似乎自动适应内容而不是控件。

    有一个黑客,我认为会接近。首先,您需要将存储库编辑的ItemsLayout 属性设置为“Flow”,这将使单选按钮彼此相邻显示,而不是根据最大的标题使它们成为空间:

    repositoryItemRadioGroup1.ItemsLayout = DevExpress.XtraEditors.RadioGroupItemsLayout.Flow
    

    下一部分是技巧,可能需要一些调整...您基本上需要根据单选项目标题和单选按钮手动计算列的宽度。带有填充的单选按钮本身的宽度大约为 25。每个字符可能是 5 或 6。因此,如果您选取每个项目并假设它需要 25 x 字符数的宽度,您可以将其加起来并相应地设置列宽。

    int width = 0;
    foreach (var choice in choices)
    {
        var choiceValue = index.ToString();
        width += (25 + 6 * choice.Length);
        ++index;
        var item = new RadioGroupItem(choiceValue, choice);
        repositoryItemRadioGroup1.Items.Add(item);
    }
    
    colGridColumn.Width = width;
    

    我希望有针对此问题的 Dev Ex 解决方案,但我不知道有一个...同时尝试一下。

    【讨论】:

    • 很遗憾,我无法更改列宽。我正在寻找的是如何摆脱您提到的填充,因为这似乎是导致剪辑的原因。
    • 如果您只需要删除填充,将 ItemsLayout 属性更改为 Flow 应该可以修复它。你能试试吗?
    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多