c#无法从另一个表单与listbox交互



我有一个名为setIndex的方法的以下表单

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 ProjectName
{
public partial class SettingsWindow : Form
{
internal readonly static SettingsWindow Instance = new SettingsWindow { Visible = false };
public SettingsWindow()
{
InitializeComponent();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string defaultsearch = listBox1.GetItemText(listBox1.SelectedItem);
Core.RegistryHelper.SaveSetting("Config", "ds", defaultsearch);
if (defaultsearch == "aaa") {
Core.LandingUrlOrig = Core.DomainName + "/defaulturl1.php";
} else {
Core.LandingUrlOrig = Core.DomainName + "/defaulturl2.php";
}
}
public static void setIndex(int i)
{
listBox1.SelectedIndex = i;
}

在另一个名为MainWindow的表单初始化期间,我调用它:

public MainWindow()
{ 
SettingsWindow.setIndex(0);
}

我得到的错误是:An object reference is required for the non-static field, method, or property 'SettingsWindow.listBox1'

最初,listbox方法不是静态的,因此在MainWindow中是不可见的。但现在,即使表单已经实例化,listbox似乎也不存在。我该如何解决此问题?我只是在学习C#。

提前感谢

因为函数setIndex是静态的,所以需要使用Instance属性:

public static void setIndex(int i)
{
Instance.listBox1.SelectedIndex = i;
}

或者不要使该函数为静态函数,然后在主窗口函数中使用实例:

public void setIndex(int i)
{
listBox1.SelectedIndex = i;
}
public MainWindow()
{ 
SettingsWindow.Instance.setIndex(0);
}

最新更新