Не могу добавить элементы в список из другого класса C # - PullRequest
1 голос
/ 06 января 2012

Я пытаюсь добавить элементы в список из другого класса, информация передается функции, но список, похоже, не обновляется. это мой код:

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"); 
}

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Вы создаете Form из другого класса - любые изменения, сделанные вами для потомков Form, не будут отображаться, потому что это другая форма, которая отображается.Вместо этого вы хотите либо передать экземпляр Form, работающий в класс FtpFileSystemWatcher, чтобы он мог получить доступ к свойству Form.Controls, либо предоставить ему прямой доступ к ListBox или источнику ListBoxitems.

EDIT

Предложение:

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 запущен (при условии, что он работает правильно).Затем вы должны увидеть желаемые обновления.

0 голосов
/ 06 января 2012

вы можете легко использовать наследование, так как модификатор доступа к процедуре установлен на public

Основной класс (ФОРМА):

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"); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...