可以';t将其他类C#中的项目添加到列表框中
本文关键字:项目 添加 列表 其他 可以 | 更新日期: 2023-09-27 18:19:42
我正试图从另一个类向listbox添加项,信息传递给函数,但listbox似乎没有更新。这是我的代码:
Main class (FORM) :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// the function that updates the listbox
public void logURI(string OutputLog, string Information, string JOB)
{
try
{
listBox1.BeginUpdate();
listBox1.Items.Insert(0, DateTime.Now.ToString() + " : " + JOB + " " + Information);
listBox1.Items.Add("1");
listBox1.EndUpdate();
textBox1.Text = JOB;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
二等:
public class FtpFileSystemWatcherTS
{
Form1 logs = new Form1();
logs.logURI( "", "Found folder modefied today (" + FileName.TrimEnd(), ") ElectricaTS");
}
我做错了什么?
您正在从另一个类中创建Form
-您对Form
的子级所做的任何更改都不会显示,因为它是正在显示的另一个窗体。相反,您希望将正在运行的Form
实例传递到FtpFileSystemWatcher
类中,以便它可以访问Form.Controls
属性,或者直接访问ListBox
或ListBox
项的源。
编辑
建议:
public partial class Form1 : Form
{
private FtpFileSystemWatcher mWatcher;
// ... some code ...
public Form1()
{
InitializeComponent();
// Create a new watcher and give it access to this form
mWatcher = new FtpFileSystemWatcher(this);
}
// ... Logging code ...
}
public class FtpFileSystemWatcher
{
private Form1 mMainForm;
public FtpFileSystemWatcher(Form1 mainForm)
{
mMainForm = mainForm;
}
public void Log()
{
mMainForm.logUri(...);
}
}
这只是一些代码格式的示例,您可以使用这些代码格式来授予FtpFileSystemWatcher
对正在运行的Form
的访问权限。这将在Form
运行时进行设置(假设它运行正确)。然后您应该会看到您想要的更新。
您可以很容易地使用继承,因为过程的访问修饰符设置为公共
主要类别(FORM):
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// the function that updates the listbox
public void logURI(string OutputLog, string Information, string JOB)
{
try
{
listBox1.BeginUpdate();
listBox1.Items.Add("0");
listBox1.Items[0] = DateTime.Now.ToString() + " : " + JOB + " " + Information;
listBox1.Items.Add("1");
listBox1.EndUpdate();
textBox1.Text = JOB;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
public class FtpFileSystemWatcherTS : Form1
{
logURI( "", "Found folder modefied today (" + FileName.TrimEnd().toString(), ") ElectricaTS");
}