【问题标题】:C# winform, is it a good idea to have all Related Classes Partial?C# winform,将所有相关类都设为 Partial 是个好主意吗?
【发布时间】:2012-07-25 01:53:54
【问题描述】:

我的主窗体,有两个按钮可以显示其他窗体 (每个按钮显示一个新表单) 现在,我的主要表单类名称是 MyMainForm .. 其他两个表单类名称是: MySubForm1 , MySubForm2 问题是我在访问 MyMainForm 中的某些内容时遇到了一些问题 在子表单内部..

将它们全部设为局部是个好主意吗?

【问题讨论】:

  • 您能否澄清一下“子表单”是什么?它只是您显示的另一种形式吗?对话? MDI 应用程序中的“文档”表单?如果上述任何一种情况属实,则不适合使用偏类。
  • 您可以使用用户控件来分隔您的设计(或您的主窗口)查看这篇文章:akadia.com/services/dotnet_user_controls.html
  • 是的,它只是一个表单,我正在显示它是 System.Windows.Forms.Form
  • 你能澄清一下你想来回传递什么样的信息吗?
  • 实际上,我的 mainForm 中有 3 个文本框我想从子窗体访问,所以我想出了一个想法,我做了一个方法来更改这些文本框(这个方法在 myMainForm 类中)然后,我将它添加到委托并将委托传递给第二种形式的构造函数..我不知道这是否好..但我只是想要一种更好的方法来做到这一点..如果我制作子表单部分,我将能够访问主窗体中的文本框,所以我的 Q 是一件好事吗?

标签: c# winforms


【解决方案1】:

在我看来,您希望能够从不同的表单访问表单的私有成员。

如果您希望能够访问其任何成员,则需要从“子表单”引用到父表单。

其次,您将无法访问“私人”成员。还有两个选项,为您想要的成员创建公共 get/set 方法,或者将对象的访问修饰符更改为 public/internal。

发布更多代码来解释您尝试过的内容以及您想要实现的目标,我也许可以为您指明正确的方向。

此外,在更直接地回答您的问题时,部分与您尝试做的事情无关,它们用于扩展现有类,同时保持逻辑文件中的代码分离。

public class Main : Form
{
     // assuming here you have three textboxes

     private void button1_Click(eventargs etc)
     {
         OtherForm otherForm = new OtherForm() { Text1 = textbox1.Text, 
                                                 Text2 = textbox2.Text,
                                                 Text3 = textbox3.Text };
         otherForm.Show();
     }

}

public class OtherForm : Form
{
    public String Text1 { get; set; }
    public String Text2 { get; set; }
    public String Text3 { get; set; }
}

使用此设置,您的 OtherForm 将拥有创建表单时文本值的副本。

从您的问题和后续 cmets 的声音来看,这是您在您的场景中所期望的,但我会再说一遍,给我们展示一些代码,我们可以提供更好的帮助。 Partials 绝对不是正确的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多