通过Logic.cs在MainForm上填充ComboBox

时间:2014-10-10 15:13:06

标签: c# winforms combobox

我能够通过MainForm上的StreamReader填充一个comboBox。我现在发现在不同的对话框中,我将在几个不同的组合框中需要相同的信息。这项工作接受我似乎无法进入comboBox" cbTask"。错误状态"名称' cbTask'在当前上下文中不存在"。代码

    public static void TaskPopulate()
    {

        try
        {
            StreamReader task = new StreamReader(dataFolder + TasksFile);
            string tasks = task.ReadLine();

            while (tasks != null)
            {
                cbTask.Items.Add(tasks);
                tasks = task.ReadLine();
            }

        }

        catch
        {

        }
    }

dataFolder是路径,TasksFile是文件名。如果我将它留在MainForm上,效果会很好。

有人能指出我正确的方向吗?感谢您提前查看!!我很感激。祝你有个美好的一天!

编辑:经过几次阅读后,看起来我的问题不明确。我尝试将StreamReader中的信息添加到多个子对话框中的多个组合框中。

3 个答案:

答案 0 :(得分:1)

将其移至新服务,并根据您需要的任何表单的服务参考。

示例代码:

public class MyService()
{
    public IEnumerable<string> LoadTasks()
    {
        var taskList = new List<string>();
        try
        {
            StreamReader task = new StreamReader(dataFolder + TasksFile);
            string tasks = task.ReadLine();

            while (tasks != null)
            {
                taskList.Add(tasks);
                tasks = task.ReadLine();
            }    
        }
        catch
        {
        }
        return taskList;
    }
}

public Form MainForm()
{
    private MyService _myService = new MyService();

    public static void TaskPopulate()
    {
        foreach(var task in _myService.LoadTasks())
        {
            cbTask.Items.Add(task);
        }
    }
}

答案 1 :(得分:1)

我的第一个答案提供了一种企业风格的解决方案,所以如果您想要一种更简单,更少扩展的方式来应对挑战,那么这是另一种方法。

public static class MyTaskComboBoxPopulater()
{
    public static void LoadTasksToCombobox(ComboBox comboBox)
    {
        try
            {
                StreamReader task = new StreamReader(dataFolder + TasksFile);
                string tasks = task.ReadLine();

                while (tasks != null)
                {
                    comboBox.Items.Add(tasks);
                    tasks = task.ReadLine();
                }    
            }
        catch
        {
        }
    }
}

public Form MainForm()
{
    public static void TaskPopulate()
    {
        MyTaskComboBoxPopulater.LoadTasksToCombobox(cbTask);
    }
}

答案 2 :(得分:0)

你在主窗口或单独的课程中有这种方法吗?如果它是一个单独的类,这可能解释为什么无法找到“cbTask”。

另外,请尝试使用与此string variable = otherForm.TextBox1.Text;

类似的内容