c# - c#无法从另一个表单与列表框交互
问题描述
我有以下表格和一个名为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
. 但是现在,即使表单已被实例化,列表框似乎也不存在。我该如何解决这个问题?我只是在学习 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);
}
推荐阅读
- angular - 如何通过重置按钮清除表单的错误消息/取消表单后
- azure - 如何通过 Git VM 管理 azure 本地 Web 应用程序文件
- python - 在 pytest 中如何使用命令行参数来修改测试参数?
- python - 如何使用 Python 正则表达式匹配任何括号组之外的文本?
- java - Paho connectionLost 永不开火
- html - 仅在类的第一次或最后一次出现时应用 CSS
- sql - 将日期从 Excel VBA 传递到 SQL Server
- sql - 有没有办法通过 WHERE 子句中的 DECLARE 指向表中的特定列?
- jquery-select2 - 如何在select2中设置键盘悬停
- mongodb - MongoDB加法和减法在聚合上不能同时工作