【问题标题】:Calling a method on another form in C#在 C# 中调用另一个窗体上的方法
【发布时间】:2009-05-08 09:02:53
【问题描述】:

我正在构建一个基本的图像编辑器。在我的应用中,如果用户想要调整图像大小,则会弹出一个新表单并要求用户输入图像的新宽度和高度。

public partial class Form1 : Form
{
...
    private void resizeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        resize resizeForm = new resize();
        resizeForm.ShowDialog();
    }
...
}

我想知道如何从 resizeForm 获取值并使用它们来更改父表单(Form1 实例)上的图像。

如果这个问题需要澄清,请告诉我。

谢谢!

【问题讨论】:

  • 我猜你想将 resizeForm 显示为模态

标签: c# winforms


【解决方案1】:

我认为有很多方法可以做到这一点。我可能会在 resizeForm 上使用公共属性,然后在 resizeForm.ShowDialog() 返回时获取这些属性。

if (resizeForm.ShowDialog() == DialogResult.OK) // or whatever
{
   myVal = resizeForm.Val;
   ...
}

或类似的东西。

【讨论】:

    【解决方案2】:

    在“调整大小”类中为要检索的值设置属性。例如,如果你添加一个宽度属性:

    public int Width { get; set; }
    

    您将能够从 Form1 类中获取宽度。

    【讨论】:

    • 添加属性然后调用ShowDialog后,下一行就是关闭对话框后,只要使用resizeForm.Width,设置的就行了。
    【解决方案3】:

    向调整大小的表单添加属性,以便在关闭调整大小的表单后您的主表单可以查询,例如...

    DialogResult dr = resizeForm.ShowDialog();
    
    if( dr != DialogResult.Cancel )
    {
      var newH = resizeForm.Height;
      var newW = resizeForm.Width;
    
      // do something with new vals.
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-10
      • 2011-08-10
      • 1970-01-01
      • 2022-01-23
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多