现在,在任何人将这个问题标记为重复之前,我想说我的问题与其他问题有所不同。我正在尝试从另一个表单中打开一个现有的Form,但是从某种意义上说,我已经设置了一些Forms以“托管”其他Forms(在它们之间传递变量),这是有问题的。这就是我的意思:
public partial class Schedule_Tasks : Form
{
readonly Schedules schedules;
public Schedule_Tasks(Schedules host)
{
this.schedules = host;
InitializeComponent();
}
因此,在此代码段中,我试图将一些变量的值从Schedules表单中获取到Schedule_Tasks表单中。因此,我使用了“主机”系统。到目前为止,此方法可以正常工作,但是当我尝试从不是“托管”的另一个表单中打开一个特定的表单时,就会出现我的问题。例如使用:
new Schedules().Show();
因此,很明显,当我声明此内容时,我会在Schedules之后的括号中放入“ this”之类的内容,但是如果在“宿主” Form之外调用Form则不起作用。我只想现在有什么我想念的东西或者可以改变吗?请让我知道是否有任何不清楚的地方,这有点难以解释。感谢您的帮助,干杯。
编辑
这是我现在正在使用的代码:
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;
}
您的(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时都需要检查它,依此类推。
当然,完全有可能使用不带“宿主”的表格。如果您的代码需要“主机”,它将失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句