【问题标题】:Limiting size of input to the size of a TextBox in C#在 C# 中将输入的大小限制为 TextBox 的大小
【发布时间】:2017-03-11 01:44:32
【问题描述】:

我已经看到了很多关于将 TextBox 缩放到文本大小的问题,但只发现了一个关于相反 here 的问题。这个问题也是从 2010 年开始的,我相信从那时起语言已经发展,可能会有更好的解决方案。

我会澄清一下,我确实希望将我的输入限制为任意数量的字符,因为输入可能包含换行符/垂直空格。 (如果它包含大量垂直空间,可能会将文本拉伸到边界之外。)

情况如下:

  • 表格 1 有一个文本框。我希望这个文本框保持固定大小。任何超出大小的数据都应从输入中删除。
  • 我想将 Form 1 的文本框的内容保存到一个文件中。
  • 在表格 2 中,我想打开文件并提取表格 1 的文本框的内容。这些将保存在 Form 2 本地的单独文本框中。

我现在的策略是想办法限制输入到文本框的尺寸,让Form 1和Form 2中的文本框是等价的,不会溢出各自的尺寸。

所以我的问题是:我该怎么做呢?


编辑:抱歉,我的问题似乎没有提供足够的信息。情况我也打错了,下面重新写。

我将退后一步,描述更多我正在尝试做的事情。

假设我有一个表单,其中包含以下两个对象:

  • 文本框
  • 标签

我在文本框中输入的任何内容都希望在标签的文本中看到。输入可以是任何字母、数字或特殊字符,包括空格和换行符。

为了尺寸一致,我希望标签具有固定的图形尺寸;无论标签文本中的字符数如何,标签对象都不应大于 (x, y),其中 x 和 y 是任意高度和宽度大小。

我不希望文本框中的数据不适合标签大小的范围。应防止用户在文本框中输入超出标签大小范围的数据。

链接问题中是否有任何策略可以确定文本框的文本是否满足或超出任意宽度和高度?

【问题讨论】:

  • 我认为除了测量文本以适应文本框之外,没有其他方法可以实现这一目标。但不是很好也不可靠。也许“手动”将字符最大长度限制为您想要的更好..
  • 您是否在您说您从 2010 年开始查看的答案中查看了答案 2。我不会怀疑语言已经发生了足够的变化,可以做出比 A1 或 2 更好的方法。它可以如果我们知道您为什么要执行如此奇怪的功能,请提供帮助;我认为表格将是静态的,或者还取决于显示器的大小?也许有更好的方法来解决一般问题?
  • 我将问题更新为更简单的格式。现在忽略文件操作和第二种形式,只是检查大小的根本问题。

标签: c# winforms


【解决方案1】:

文本框的属性给你一个最大长度,你也可以像这样在代码中做到这一点

var tb = new TextBox();
tb.MaxLength = 10

如果你不想使用它,那么你应该使用

var str = tb.Text.Remove(0, 10) 

这只会给 str 变量前 10 个字符,无论文本框中实际内容的长度如何。

对于你想要的表格二,你需要给我更多关于你想要什么的信息。


在 OP 编辑​​后编辑

如果您希望文本框中的文本在标签级别匹配,您希望将 TextChanged 事件添加到文本框的属性,然后具有类似的内容

private void TextChanged(object sender, EventArgs e)
{
    label1.Text = textBox1.Text;
}

将标签固定大小不管是什么都不好,我做到了,但这也引出了一个问题,为什么要将文本框信息复制到标签中。为什么不把它放在一个文本框中

【讨论】:

  • @Sven 刚刚看到你的更新,一会儿我给你发一些代码
  • @Sven ive 更新了我的答案,但您要求的某些内容不是好的做法
  • 感谢您的回复。我很感激你的回答,即使它归结为复杂和糟糕的做法。不知道这个问题有没有好的解决方案,我会尽量重构,一开始就防止出现这种情况。
猜你喜欢
  • 2019-03-31
  • 2011-08-31
  • 2015-02-04
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2010-12-25
相关资源
最近更新 更多