C#获取静态空格中文本框的值

时间:2018-01-02 14:34:08

标签: c# visual-studio

我试图在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文本没有改变。

1 个答案:

答案 0 :(得分:2)

有两种选择。

  1. 您使该方法非静态。这是最简单的解决方案,也是最有意义的解决方案。毕竟你使用的是实例变量。

    void CreateCall()
    {
        var numberToDial = this.txtNum.Text;
    }
    
  2. 将表单传递给方法,如上所述,它没有意义,但它完成了工作。 txtNum必须为internalpublic,或CreateCall必须位于同一类中:

    static void CreateCall(FrmPhone frmPhone)
    {
        var numberToDial = frmPhone.txtNum.Text;
    }
    

    调用您在this中传递的代码:

    CreateCall(this);