ApiController访问值textBox Windows窗体
本文关键字:Windows 窗体 textBox 访问 ApiController | 更新日期: 2023-09-27 18:17:50
我正在做一个项目在Windows窗体与webapi。当webapi调用时,我将得到一个textBox的值。
下面是代码片段,但它不起作用,因为它在代码后面给出错误。
namespace TCCWindows
{
public partial class FormPrincipal : Form
{
public static string PegarCoordenadas()
{
return edtLatitudeGMS.Text + " | " + edtlngGMS.Text;
}
}
public class GPSController : ApiController
{
public string Posicao()
{
return TCCWindows.FormPrincipal.PegarCoordenadas();
}
}
}
错误:Error 2 An object reference is required for the non-static field, method, or property 'TCCWindows.FormPrincipal.edtLatitudeGMS' I:'C#'TCC'TCCWindows'FormPrincipal.cs 224 20 TCCWindows
Error 3 An object reference is required for the non-static field, method, or property 'TCCWindows.FormPrincipal.edtlngGMS' I:'C#'TCC'TCCWindows'FormPrincipal.cs 224 50 TCCWindows
PegarCoordenadas方法是静态的,但是像edtLatitudeGMS这样的控件属于表单的某个实例。在静态方法中引用的所有内容本身都需要是静态的。所以你的代码是无效的。
当你使PegarCoordenadas静态,因为你没有一个具体的引用到一个FormPrincipal实例在现场,你想调用它,然后你采取了错误的方向来解决这个问题。必须有对这样一个实例的具体引用。当你创建FormPrincipal时,将引用存储在某个地方(可能在你的GPSController中),并使其在Posicao方法中可访问。
我的解决方案是:
public partial class FormPrincipal : Form
{
public static string PegarCoordenadas()
{
return LatitudeGMS + " | " + LongGMS;
}
public static string LatitudeGMS, LongGMS;
public FormPrincipal(){
InitializeComponents();
edtLatitudeGMS.TextChanged += (s,e) => { LatitudeGMS = edtLatitudeGMS.Text;};
edtlngGMS.TextChanged += (s,e) => {LongGMS = edtlngGMS.Text;};
}
}
静态方法中只能使用static stuff