我能够通过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中的信息添加到多个子对话框中的多个组合框中。
答案 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;