我试图在FrmPhone表单上获取一个名为txtNum的文本框的值,并写入文本框txtLog,但静态空白和FrmPhone上的文本框之间似乎没有交互。
以下是CreateCall Static Void的代码。
private void btnCall_Click(object sender, EventArgs e)
{
CreateCall();
}
static void CreateCall()
{
FrmPhone FrmPhone = new FrmPhone();
var numberToDial = FrmPhone.txtNum.Text;
FrmPhone.txtLog.Text += "\r\nCall " + numberToDial;
FrmPhone.txtLog.ScrollToCaret();
SetupDevices();
call = softphone.CreateCallObject(phoneLine, numberToDial);
call.CallStateChanged += call_CallStateChanged;
call.Start();
}
在静态void中执行代码时,允许我与表单上的文本框进行交互,我缺少什么?
另外值得注意的是,如果替换
var numberToDial = FrmPhone.txtNum.Text;
带
var numberToDial = "2788";
进行了调用,但txtLog文本没有改变。
答案 0 :(得分:2)
有两种选择。
您使该方法非静态。这是最简单的解决方案,也是最有意义的解决方案。毕竟你使用的是实例变量。
void CreateCall()
{
var numberToDial = this.txtNum.Text;
}
将表单传递给方法,如上所述,它没有意义,但它完成了工作。 txtNum
必须为internal
或public
,或CreateCall
必须位于同一类中:
static void CreateCall(FrmPhone frmPhone)
{
var numberToDial = frmPhone.txtNum.Text;
}
调用您在this
中传递的代码:
CreateCall(this);