非静态字段、方法或 属性 'Assignment_1.frmMain.setListIndex(int)' 需要 C# 对象引用
C# object reference is required for the non-static field, method or property 'Assignment_1.frmMain.setListIndex(int)'
我试图以另一种形式更改列表框的 SelectedIndex,但我遇到了上述错误。在其他帖子中查看此错误的原因,它们似乎是由目标表单中的静态方法引起的,但我无法在我的代码中找出发生这种情况的位置。
主要形式:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Assignment_1
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
public void setListIndex(int index)
{
lstEvents.SelectedIndex = index;
}
}
}
中学
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Assignment_1
{
public partial class frmSearch : Form
{
private int selectedEvent;
public frmSearch(int index)
{
InitializeComponent();
selectedEvent = index;
}
private void btnSearch_Click(object sender, EventArgs e)
{
frmMain.setListIndex(selectedEvent); //error here
}
}
}
有什么想法吗?如果有其他方法可以以另一种形式更改所选项目?
当你打电话给frmMain.setListIndex(selectedEvent);
您正在尝试调用 class (静态)方法;但是,该方法不是静态的。静态方法是 classes 的一部分(如 static void Main(String[])
)。非静态方法或缺少修饰符 static
的方法需要对象引用,由 new
或检索方法构建。
因此,我们可以看到您有两个选择:将方法设为静态,或创建一个对象。对我来说,既然我们在谈论形式,那么创建对象是最好的解决方案。
btnSearch_Click 方法内部:
{
frmMain f = new frmMain();
f.setListIndex(selectedEvent);
}
我试图以另一种形式更改列表框的 SelectedIndex,但我遇到了上述错误。在其他帖子中查看此错误的原因,它们似乎是由目标表单中的静态方法引起的,但我无法在我的代码中找出发生这种情况的位置。
主要形式:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Assignment_1
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
public void setListIndex(int index)
{
lstEvents.SelectedIndex = index;
}
}
}
中学
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Assignment_1
{
public partial class frmSearch : Form
{
private int selectedEvent;
public frmSearch(int index)
{
InitializeComponent();
selectedEvent = index;
}
private void btnSearch_Click(object sender, EventArgs e)
{
frmMain.setListIndex(selectedEvent); //error here
}
}
}
有什么想法吗?如果有其他方法可以以另一种形式更改所选项目?
当你打电话给frmMain.setListIndex(selectedEvent);
您正在尝试调用 class (静态)方法;但是,该方法不是静态的。静态方法是 classes 的一部分(如 static void Main(String[])
)。非静态方法或缺少修饰符 static
的方法需要对象引用,由 new
或检索方法构建。
因此,我们可以看到您有两个选择:将方法设为静态,或创建一个对象。对我来说,既然我们在谈论形式,那么创建对象是最好的解决方案。
btnSearch_Click 方法内部:
{
frmMain f = new frmMain();
f.setListIndex(selectedEvent);
}