通过Logic.cs在MainForm上填充组合框
本文关键字:填充 组合 MainForm Logic cs 通过 | 更新日期: 2023-09-27 18:26:08
我能够通过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中的信息添加到多个子对话框上的多个组合框中。
我的第一个答案提供了一个企业风格的解决方案,因此如果您想要一种更简单、扩展性更低的方法来处理您的挑战,这里有另一种方法。
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);
}
}
将其移动到一个新的Service,并依赖于所需表单的Service引用。
样本代码:
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);
}
}
}
您在主窗口中还是在单独的类中有这个方法?如果它在一个单独的类中,这可能解释了为什么找不到"cbTask"。
此外,请尝试使用类似于此string variable = otherForm.TextBox1.Text;
的东西