【问题标题】:How to set 'RowLength' for a textbox in Silverlight?如何在 Silverlight 中为文本框设置“行长度”?
【发布时间】:2010-02-17 11:55:35
【问题描述】:

是否可以在 Silverlight 中为多行 (AcceptsReturn="True") 文本框设置每行的字符数?类似于 HTML 中 Textarea 的 Cols 属性。

【问题讨论】:

    标签: silverlight textbox


    【解决方案1】:

    不是真的。通常,您只需将高度和宽度设置为您想要的任何值。您希望每行有一定数量的字符有什么特别的原因吗?

    [编辑]
    我在这里找到了一些将字符串分成相等的块的代码:
    Splitting a string into chunks of a certain size
    使用它,我想出了以下内容。它工作正常,但需要一些调整。

    private void TextBox_KeyUp(object sender, KeyEventArgs e)
    {
        var text = (sender as TextBox).Text.Replace(Environment.NewLine, "").Chunk(8).ToList();
    
        (sender as TextBox).Text = String.Join(Environment.NewLine, text.ToArray());
        (sender as TextBox).SelectionStart = (sender as TextBox).Text.Length;
    }
    

    以及扩展方法:

    public static class Extensions
    {
        public static IEnumerable<string> Chunk(this string str, int chunkSize)
        {
            for (int i = 0; i < str.Length; i += chunkSize)
                yield return str.Substring(i, Math.Min(chunkSize, str.Length - i));
        }
    }
    

    【讨论】:

    • 原因是 TextBox 用作消息的格式化程序,该消息即将显示在具有固定行长的外部显示器上。因此,用户将看到它的格式,因为它将被显示。使用精确的文本框宽度是我现在使用的解决方案,但是设置字符数而不是计算正确的文本框宽度会容易得多。尤其是当值发生变化时。
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2012-12-03
    • 2014-06-19
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多