Ten*_*enG 1 c# object-reference
我试过这个,但我的问题可能是我不知道描述问题的正确术语.
我有一个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;
Run Code Online (Sandbox Code Playgroud)
我想避免重复,并有类似的东西:
// Pseudo Code
runCmd ( object tbxCmd, object tbxWait )
{
tbxCmd.BackColor = Color.Salmon;
processCmd(tbxCmd.Text);
System.Threading.Thread.Sleep( tbxWait.text );
tbxCmd.BackColor = Color.White;
}
Run Code Online (Sandbox Code Playgroud)
然后:
runCmd( tbxStressCmd1, tbxStressWait1 );
.
.
runCmd( tbxStressCmd9, tbxStressWait9 );
Run Code Online (Sandbox Code Playgroud)
引用文本框对象的正确方法是什么,以便它们可以传递给函数并在上面的伪代码中使用?
我真的不知道你在这做什么!但是,您正在传递一个类型的变量TextBox作为object方法,您没有传递实际类型.在这里,我想,TextBox输入.如果未传递实际类型,则无法操纵该类型的属性.你只会看到与处理类型,如果它是你使用过这便是参数的类型Object在这里由于文本框从基类派生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;
}
Run Code Online (Sandbox Code Playgroud)
我想完成一些笔记:
首先您不能传递字符串值
System.Threading.Thread.Sleep.你应该做一些名为
casting或type converting.您可以搜索这些条款.为此,请C#为您提供帮助类转换.您可以使用辅助方法ToInt32将值转换TextBox为Int32值类型.
如果要在UI应用程序或UI-Thread上下文中实现"等待"或"延迟"效果.我建议你使用Task.Delay,而是和await返回延迟任务,并标记你的方法async修改.这称为异步编程