是否可以在 C# winforms 中一次将文本写入多个文本框?
Posted
技术标签:
【中文标题】是否可以在 C# winforms 中一次将文本写入多个文本框?【英文标题】:Is it possible to write a text onto multiple textboxes at once in C# winforms? 【发布时间】:2021-09-02 02:14:14 【问题描述】:是否可以一次将文本写入多个文本框(参见代码)?除了一次将文本写入文本框之外,还有什么更简单的语法可以做到这一点?
我知道我可以为此使用 for 循环,但除了使用循环之外还有其他方法吗?
谢谢!
示例代码:
DateTime tpi1 = DateTime.Now;
tb05.Invoke((MethodInvoker)(() => tb05.Text = tpi1.ToString()));
tb15.Invoke((MethodInvoker)(() => tb15.Text = tpi1.ToString()));
tb25.Invoke((MethodInvoker)(() => tb25.Text = tpi1.ToString()));
tb35.Invoke((MethodInvoker)(() => tb35.Text = tpi1.ToString()));
tb45.Invoke((MethodInvoker)(() => tb45.Text = tpi1.ToString()));
tb55.Invoke((MethodInvoker)(() => tb55.Text = tpi1.ToString()));
【问题讨论】:
是的,有可能。例如,您可以创建一个文本框集合并在其上使用 foreach 来更改文本,或者使用Controls.TypeOf<TextBox>
和 Where
使用一些 serach 模式,如 "tbXX"
。适合什么?
当我使用循环时,它会导致一点延迟,应该避免我的代码的其他部分工作。但我会调查 Control.TypeOf 你提到的。
您确定首先需要Invoke
吗?如果这样做,请创建一个 Invoke
并在其 lambda 内循环。
您还可以在每个文本框上添加一个事件处理程序,这样当您更改一个时,其他所有的都会更改。理论上,我更喜欢这个选项,而不考虑其他事情,只考虑提供的代码。为什么调用?这段代码是否在一个单独的线程中?
我是 C# 编程的初学者。我只是想避免跨线程操作错误,这就是我使用它的原因。
【参考方案1】:
我不会这样做,但从技术上讲,你可以通过 WinForm 上的 MVVM 方法来做到这一点
【讨论】:
以上是关于是否可以在 C# winforms 中一次将文本写入多个文本框?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 Swift 中一次将委托分配给同一类的多个对象?