我已经尝试过搜索,但我的问题可能是我不知道描述问题的正确术语。
我有一个C#表单,包含许多文本框对象。
在某些情况下,我按顺序处理每个文本框的内容,如下所示:
tbxStressCmd1.BackColor = Color.Salmon;
processCmd(tbxStressCmd1.Text);
System.Threading.Thread.Sleep( tbxStressWait1.text );
tbxStressCmd1.BackColor = Color.White;
tbxStressCmd2.BackColor = Color.Salmon;
processCmd(tbxStressCmd2.Text);
System.Threading.Thread.Sleep( tbxStressWait2.text );
tbxStressCmd1.BackColor = Color.White;
.
tbxStressCmd9.BackColor = Color.Salmon;
processCmd(tbxStressCmd9.Text);
System.Threading.Thread.Sleep( tbxStressWait9.text );
tbxStressCmd9.BackColor = Color.White;
我想避免重复,并有类似的东西:
// Pseudo Code
runCmd ( object tbxCmd, object tbxWait )
{
tbxCmd.BackColor = Color.Salmon;
processCmd(tbxCmd.Text);
System.Threading.Thread.Sleep( tbxWait.text );
tbxCmd.BackColor = Color.White;
}
然后:
runCmd( tbxStressCmd1, tbxStressWait1 );
.
.
runCmd( tbxStressCmd9, tbxStressWait9 );
引用文本框对象的正确方法是什么,以便它们可以传递给函数并在上面的伪代码中使用?
答案 0 :(得分:6)
我真的不知道你在这做什么!
但是,您将TextBox
类型的变量作为object
传递给方法,您没有传递实际类型。我认为,这是TextBox
类型。如果您未通过实际类型,则无法操纵该类型的属性。你会看到&处理类型,好像它是用于传递参数的类型,Object
这里因为TextBox派生自基类Object
。您可以查看Object
班级成员。你在那里看不到Text
属性:)。
你可以这样做:
public void DoTheThing(TextBox txCmd, TextBox txWait){
txCmd.BackColor = Color.Salmon;
ProcessCmd(txCmd.Text);
System.Threading.Thread.Sleep(txWait.Text)
txCmd.BackColor = Color.White;
}
我想完成一些笔记:
首先,您无法传递字符串值
System.Threading.Thread.Sleep
。你应该做一些叫做的事
casting
或type converting
。您可以搜索这些条款。至
这样做,C#
为您提供帮助类Convert。您可以使用辅助方法ToInt32
将TextBox
中的值转换为Int32
值类型。
如果你想实现一个"等待"或者"延迟"效果,在UI
应用程序或UI-Thread
上下文中。我建议您改为使用Task.Delay
和await
返回的延迟任务,并使用async
修饰符标记您的方法。这称为Asynchronous Programming