如何在没有 static 和 new class(); 的情况下从 Form2 调用 Form1 的方法?
How to call Form 1's method from Form2 without static and new class();?
在没有static和new的情况下调整Form的大小时如何调用Form 1的方法class();像下面的代码。因为不止一个 new class();使用代码时会导致“System.WhosebugException”问题。它不采用它保存在 class 中的值,由于是静态的。
Form1 class代码:
Form2 frm2 = new Form2();
public void ResizePicture(int Height, int Width)
{
frm2.pictureBox1.Height = Height;
frm2.pictureBox1.Width = Width;
}
private void button1_Click(object sender, EventArgs e)
{
frm2.pictureBox1.Image = Image.FromFile(@"C:\Users\Omer\Desktop\screenshot.png");
frm2.Show();
}
Form2 class代码:
private void Form2_Resize(object sender, EventArgs e)
{
ResizePicture(this.Height, this.Width);
}
您可以订阅其他形式的Resize
活动
在表格 1 中:
private readonly Form2 frm2;
private Form1()
{
InitializeComponent();
frm2 = new Form2();
frm2.Resize += Frm2_Resize;
}
private void Frm2_Resize(object sender, EventArgs e)
{
...
}
这段代码只在Form1的构造函数中创建了一次Form2。现在 Form2 的 Resize 事件处理程序在 Form1 中。
另一种可能性是将第一种形式的引用传递给第二种形式
在表格 2 中:
private readonly Form1 frm1;
private Form2(Form1 frm1)
{
InitializeComponent();
this.frm1 = frm1;
}
private void Form2_Resize(object sender, EventArgs e)
{
frm1.ResizePicture(this.Height, this.Width);
// Note: `ResizePicture` must be public but not static!
}
表格 1
frm2 = new Form2(this); // Pass a reference of Form1 to Form2.
另一个,将表格 1 传递给 Show()
本身:
private void button1_Click(object sender, EventArgs e)
{
frm2.pictureBox1.Image = Image.FromFile(@"C:\Users\Omer\Desktop\screenshot.png");
frm2.Show(this); // <-- passing Form1 here!
}
在表格 2 中,您将 .Owner
转换回表格 1:
private void Form2_Resize(object sender, EventArgs e)
{
Form1 f1 = (Form1)this.Owner;
f1.ResizePicture(this.Height, this.Width);
}
在没有static和new的情况下调整Form的大小时如何调用Form 1的方法class();像下面的代码。因为不止一个 new class();使用代码时会导致“System.WhosebugException”问题。它不采用它保存在 class 中的值,由于是静态的。
Form1 class代码:
Form2 frm2 = new Form2();
public void ResizePicture(int Height, int Width)
{
frm2.pictureBox1.Height = Height;
frm2.pictureBox1.Width = Width;
}
private void button1_Click(object sender, EventArgs e)
{
frm2.pictureBox1.Image = Image.FromFile(@"C:\Users\Omer\Desktop\screenshot.png");
frm2.Show();
}
Form2 class代码:
private void Form2_Resize(object sender, EventArgs e)
{
ResizePicture(this.Height, this.Width);
}
您可以订阅其他形式的Resize
活动
在表格 1 中:
private readonly Form2 frm2;
private Form1()
{
InitializeComponent();
frm2 = new Form2();
frm2.Resize += Frm2_Resize;
}
private void Frm2_Resize(object sender, EventArgs e)
{
...
}
这段代码只在Form1的构造函数中创建了一次Form2。现在 Form2 的 Resize 事件处理程序在 Form1 中。
另一种可能性是将第一种形式的引用传递给第二种形式
在表格 2 中:
private readonly Form1 frm1;
private Form2(Form1 frm1)
{
InitializeComponent();
this.frm1 = frm1;
}
private void Form2_Resize(object sender, EventArgs e)
{
frm1.ResizePicture(this.Height, this.Width);
// Note: `ResizePicture` must be public but not static!
}
表格 1
frm2 = new Form2(this); // Pass a reference of Form1 to Form2.
另一个,将表格 1 传递给 Show()
本身:
private void button1_Click(object sender, EventArgs e)
{
frm2.pictureBox1.Image = Image.FromFile(@"C:\Users\Omer\Desktop\screenshot.png");
frm2.Show(this); // <-- passing Form1 here!
}
在表格 2 中,您将 .Owner
转换回表格 1:
private void Form2_Resize(object sender, EventArgs e)
{
Form1 f1 = (Form1)this.Owner;
f1.ResizePicture(this.Height, this.Width);
}