现在在任何人去之前将此问题标记为重复,我想说我的问题与其他问题不同。我试图从另一个表单中打开一个现有的表单,但是我已经设置了一些表单来帮助我解决问题。其他(在它们之间传递变量)。这就是我的意思:
public partial class Schedule_Tasks : Form
{
readonly Schedules schedules;
public Schedule_Tasks(Schedules host)
{
this.schedules = host;
InitializeComponent();
}
因此,在这段代码中,我试图将一些变量的值从Schedules表单中获取到Schedule_Tasks表单中。所以我已经使用了主持人'系统。到目前为止,这种方法工作正常,但是当我尝试打开一个特定的表单时,我的问题就出现了,而另一个表单并不是托管的。例如使用:
new Schedules().Show();
很明显,当我宣布这一点时,我会提出类似“这样的事情”。在时间表之后的括号中,但如果在“主持人”之外调用表单,那么该功能不起作用。形成。我现在只是想有一些我不知道或可以改变的东西吗?如果有任何部分不清楚,请告诉我,这有点难以解释。任何帮助表示赞赏,干杯。
修改
这是我现在正在使用的代码:
public partial class Schedual_Tasks : Form
{
readonly Scheduals scheduals;
public string selectedDevice;
public string getPath;
public string totalPath;
public Schedual_Tasks(Scheduals host)
{
this.scheduals = host;
InitializeComponent();
selectedDevice = scheduals.itemSelected;
}
private void Schedual_Tasks_Load(object sender, EventArgs e)
{
}
private void changeDirectory_Click(object sender, EventArgs e)
{
new Folder_Browser(this).Show(); //Error Occurs here
}
}
这是Folder_Browser的构造函数,它是我尝试调用的表单:
readonly Back_up_Options backOptions;
public string deviceSel;
public Folder_Browser(Back_up_Options host)
{
InitializeComponent();
this.backOptions = host;
deviceSel = backOptions.deviceSel;
}
答案 0 :(得分:0)
您的(Folder_Browser
)表单的构造函数声明为
public Folder_Browser(Back_up_Options host)
这意味着您无法将Schedual_Tasks
实例作为host
参数传递,因为无法将Schedual_Tasks
对象转换为Back_up_Options
对象。编译器检测到此情况并创建错误消息。
如果您无法传递host
参数,则可以改为null
:
new Folder_Browser(null).Show();
但是,您需要确保检查 backOptions
成员每次使用 null引用。例如:
if(backOptions != null)
{
deviceSel = backOptions.deviceSel;
}
else
{
deviceSel = null;
}
这反过来意味着每次使用时都需要检查deviceSel
是否为null等等。
当然,在没有“主持人”的情况下使用您的表格根本不可能。如果您的代码需要“主机”,则会失败。