C# 错误消息";非静态字段、方法或属性需要对象引用。”;
我正在创建一个访问数据库的程序 给我带来麻烦的代码是当按下按钮时打开一个新表单。然后,它根据主窗体上列表框中的选定值获取数据,并需要将该数据发送到第二个窗体,以放置在文本框和标签中 我的问题是,为了让代码在不抛出错误的情况下执行 非静态字段、方法或属性需要对象引用 我必须使第二种形式的方法是静态的;但是,这会阻止我访问辅助窗体上的控件 主窗体代码段:C# 错误消息";非静态字段、方法或属性需要对象引用。”;,c#,forms,compiler-errors,static,C#,Forms,Compiler Errors,Static,我正在创建一个访问数据库的程序 给我带来麻烦的代码是当按下按钮时打开一个新表单。然后,它根据主窗体上列表框中的选定值获取数据,并需要将该数据发送到第二个窗体,以放置在文本框和标签中 我的问题是,为了让代码在不抛出错误的情况下执行 非静态字段、方法或属性需要对象引用 我必须使第二种形式的方法是静态的;但是,这会阻止我访问辅助窗体上的控件 主窗体代码段: private void MemView_Click(object sender, EventArgs e) { str
private void MemView_Click(object sender, EventArgs e)
{
string selected = lstMember.SelectedItems[0].Text;
//MessageBox.Show(selected);
string[] data = P.selectMem(selected);
MessageBox.Show(data[0]);
MemForm mem = new MemForm(); //How to open a designed form
mem.Show(); //Displays the addmem form
MemForm.getData(data);
}
public void getData(string[] Data)
{
int index = 0;
bool loop = false;
string text;
while (loop == true)
{
if (index < 10)
{ text = "tb0" + index.ToString(); }
else
{ text = "tb" + index.ToString(); }
index = index + 1;
}
}
辅助表单代码段:
private void MemView_Click(object sender, EventArgs e)
{
string selected = lstMember.SelectedItems[0].Text;
//MessageBox.Show(selected);
string[] data = P.selectMem(selected);
MessageBox.Show(data[0]);
MemForm mem = new MemForm(); //How to open a designed form
mem.Show(); //Displays the addmem form
MemForm.getData(data);
}
public void getData(string[] Data)
{
int index = 0;
bool loop = false;
string text;
while (loop == true)
{
if (index < 10)
{ text = "tb0" + index.ToString(); }
else
{ text = "tb" + index.ToString(); }
index = index + 1;
}
}
public void getData(字符串[]数据)
{
int指数=0;
布尔循环=假;
字符串文本;
while(循环==true)
{
如果(指数<10)
{text=“tb0”+index.ToString();}
其他的
{text=“tb”+index.ToString();}
指数=指数+1;
}
}
我的第二个代码片段旨在使用循环将所有数据填充到文本框中,而无需手动写出每个tb00。Text=data[]等。
我无法访问C#中的FindControl()方法,很可能是因为需要静态方法。
主窗体中使用的P类执行SQL代码,并且工作正常
我已经尽力提供足够的信息来回答问题,但是如果需要更多的信息,只需在评论中提问,我会尝试提供更多信息。:) 如果getData()
是MemForm
中的非静态方法,则需要MemForm
的实例才能使用它。您有一个:memformmem=newmemform()
使用mem
对象,该对象是MemForm
的实例
mem.getData(data);
这不是默认的字符串类型问题吗?如果更改
字符串文本怎么办
tostring text=string.Empty代码>?您正在以静态类方法调用该方法。将其作为实例方法调用:mem.getData(data)代码>。可能会有后续问题,但要一步一个脚印地去做。@Phil P。这并不能解决问题,我希望事情能这么简单。错误是由于GetData()方法不是静态的,但是如果我将该方法更改为静态方法,我将无法再访问MemForm上的控件。谢谢您和@J.Steen,这就是问题所在。代表我犯了一个愚蠢的错误:)