如何在 class 中创建 form1 的实例并在 form1 中创建 class 的实例?
How can I make instance of form1 in a class and make instance of the class in form1?
在 form1 构造函数中:
public Form1()
{
InitializeComponent();
LoadFile(textBoxRadarPath, "radarpath.txt");
LoadFile(textBoxSatellitePath, "satellitepath.txt");
CheckIfImagesExist();
if (pictureBox1.Image == null || pictureBox2.Image == null)
{
trackBar1.Enabled = false;
}
tracker = new DownloadProgressTracker(50, TimeSpan.FromMilliseconds(500));
label1.Location = new Point(progressBar1.Width / 2 - label1.Width / 2, label1.Location.Y);
lblStatus.Text = "Download Pending";
lblAmount.Text = "";
lblSpeed.Text = "";
sat = new Satellite();
rad = new Radar();
我想将一些东西从 classes 卫星和雷达传递到 Form1,所以我在 Form1 中为 classes 创建实例。
但是在 Form1 顶部我还有这个列表,我想将这个列表从 Form1 传递到 classes 卫星和雷达:
public List<string> folders;
在每个 class 中,我为 Form1 创建了一个实例:
namespace Extract
{
class Satellite
{
private List<string> satelliteUrls = new List<string>();
private string mainUrl = "https://de.sat24.com/de/eu/infraPolair/";
private string[] statements;
Form1 f1 = new Form1();
我想在两个 class 中都使用列表文件夹。
问题是一段时间后我在 classes 中遇到异常,因为它正在做“乒乓球”,它在 class 卫星的 form1 中创建实例,然后在卫星中创建实例form1 然后返回到 form1 再次创建 classes 的实例,然后返回到 form1 的 classes 实例,依此类推。
如何在两个 classes 中使用 Form1 中的列表文件夹?
如果您在 Form1 中关心的只是名为文件夹的列表,那么只需在其他两个 classes 中的每一个中创建一个类似的容器变量,然后通过传递它们来设置这些变量的值在 classes 的实例化过程中从 Form1 class 输入。下面是 classes 的样子:
class Satellite
{
private List<string> satelliteUrls = new List<string>();
private string mainUrl = "https://de.sat24.com/de/eu/infraPolair/";
private string[] statements;
public List<string> folders = null;
Satellite (List<string>inputFolders)
{
folders = inputFolders;
}
}
class Radar
{
public List<string> folders = null;
Radar(List<string> inputFolders)
{
folders = inputFolders;
}
}
然后要创建这些 classes,您可以在 Form1 实例化中执行此操作:
public Form1()
{
InitializeComponent();
LoadFile(textBoxRadarPath, "radarpath.txt");
LoadFile(textBoxSatellitePath, "satellitepath.txt");
CheckIfImagesExist();
if (pictureBox1.Image == null || pictureBox2.Image == null)
{
trackBar1.Enabled = false;
}
tracker = new DownloadProgressTracker(50, TimeSpan.FromMilliseconds(500));
label1.Location = new Point(progressBar1.Width / 2 - label1.Width / 2, label1.Location.Y);
lblStatus.Text = "Download Pending";
lblAmount.Text = "";
lblSpeed.Text = "";
sat = new Satellite(folders);
rad = new Radar(folders);
}
因此,当窗体被实例化时,您将该文件夹列表传递到其他两个对象的实例化中,然后它们将可以访问它们。这是否回答了您的问题?
在 form1 构造函数中:
public Form1()
{
InitializeComponent();
LoadFile(textBoxRadarPath, "radarpath.txt");
LoadFile(textBoxSatellitePath, "satellitepath.txt");
CheckIfImagesExist();
if (pictureBox1.Image == null || pictureBox2.Image == null)
{
trackBar1.Enabled = false;
}
tracker = new DownloadProgressTracker(50, TimeSpan.FromMilliseconds(500));
label1.Location = new Point(progressBar1.Width / 2 - label1.Width / 2, label1.Location.Y);
lblStatus.Text = "Download Pending";
lblAmount.Text = "";
lblSpeed.Text = "";
sat = new Satellite();
rad = new Radar();
我想将一些东西从 classes 卫星和雷达传递到 Form1,所以我在 Form1 中为 classes 创建实例。
但是在 Form1 顶部我还有这个列表,我想将这个列表从 Form1 传递到 classes 卫星和雷达:
public List<string> folders;
在每个 class 中,我为 Form1 创建了一个实例:
namespace Extract
{
class Satellite
{
private List<string> satelliteUrls = new List<string>();
private string mainUrl = "https://de.sat24.com/de/eu/infraPolair/";
private string[] statements;
Form1 f1 = new Form1();
我想在两个 class 中都使用列表文件夹。
问题是一段时间后我在 classes 中遇到异常,因为它正在做“乒乓球”,它在 class 卫星的 form1 中创建实例,然后在卫星中创建实例form1 然后返回到 form1 再次创建 classes 的实例,然后返回到 form1 的 classes 实例,依此类推。
如何在两个 classes 中使用 Form1 中的列表文件夹?
如果您在 Form1 中关心的只是名为文件夹的列表,那么只需在其他两个 classes 中的每一个中创建一个类似的容器变量,然后通过传递它们来设置这些变量的值在 classes 的实例化过程中从 Form1 class 输入。下面是 classes 的样子:
class Satellite
{
private List<string> satelliteUrls = new List<string>();
private string mainUrl = "https://de.sat24.com/de/eu/infraPolair/";
private string[] statements;
public List<string> folders = null;
Satellite (List<string>inputFolders)
{
folders = inputFolders;
}
}
class Radar
{
public List<string> folders = null;
Radar(List<string> inputFolders)
{
folders = inputFolders;
}
}
然后要创建这些 classes,您可以在 Form1 实例化中执行此操作:
public Form1()
{
InitializeComponent();
LoadFile(textBoxRadarPath, "radarpath.txt");
LoadFile(textBoxSatellitePath, "satellitepath.txt");
CheckIfImagesExist();
if (pictureBox1.Image == null || pictureBox2.Image == null)
{
trackBar1.Enabled = false;
}
tracker = new DownloadProgressTracker(50, TimeSpan.FromMilliseconds(500));
label1.Location = new Point(progressBar1.Width / 2 - label1.Width / 2, label1.Location.Y);
lblStatus.Text = "Download Pending";
lblAmount.Text = "";
lblSpeed.Text = "";
sat = new Satellite(folders);
rad = new Radar(folders);
}
因此,当窗体被实例化时,您将该文件夹列表传递到其他两个对象的实例化中,然后它们将可以访问它们。这是否回答了您的问题?