如何将其他形式的方法用于我的主要形式?

时间:2016-05-12 23:07:19

标签: c# forms methods

我想使用其他形式的一些公共方法。我想知道是否有办法做到这一点,我试图将方法和表格公开,但当我尝试将其称为另一种形式的方法时,它只是dosnt出现任何东西。

这是我的主要形式:

namespace GUI
{
    public partial class frmPrincipal : Form
    {
        public frmPrincipal()
        {
            InitializeComponent();
        }

        private void categoriaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmCadastroCategoria f = new frmCadastroCategoria();
            f.ShowDialog();
            f.Dispose();
        }

        private void categoriaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            frmConsultaCategoria f = new frmConsultaCategoria();
            f.ShowDialog();
            f.Dispose();
        }

这是我尝试调用的表单

    public void LocalizarCategoria()
    {
        frmConsultaCategoria f = new frmConsultaCategoria();
        f.ShowDialog();
        if (f.codigo != 0)
        {
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);
            BLLCategoria bll = new BLLCategoria(cx);
            ModeloCategoria modelo = bll.CarregaModeloCategoria(f.codigo);
            txtCodigo.Text = modelo.CatCod.ToString();
            txtNome.Text = modelo.CatNome;
            alteraBotoes(3);
        }
        else
        {
            this.LimpaTela();
            this.alteraBotoes(1);
        }
        f.Dispose();
    }

我试图做类似的事情:

    {
      LocalizarCategoria()
    }

但我不能,它只是找不到方法。

3 个答案:

答案 0 :(得分:4)

不要调用该方法,因为它会使您的表单依赖,而不必。如果方法是另一种形式,那么它属于那里是有原因的。

您可能想要做的是将方法移动到其他位置(例如基类)。

示例:

public partial class frmPrincipal : MyFormBase // inherit from your own base
{
    ...
}

public partial class frmMyOtherForm : MyFormBase // inherit from your own base
{
    ...
}

public class MyFormBase : Form  // your own base with the to be shared method
{
    protected void LocalizarCategoria() // protected might be enough
    {
        ...
    }
}

答案 1 :(得分:0)

LocalizarCategoria实例方法(因为它不是static)。所以你需要另一个表单的实例,然后你可以像这样调用它:

var myOtherForm = new frmOtherForm();
myOtherForm.LocalizarCategoria();

或者,如果LocalizarCategoria不需要访问任何实例字段,属性或方法,那么您可以将其static

public static void LocalizarCategoria()
{
    // etc..

然后通过引用其他表单的类(而不是特定的实例)来调用它:

frmOtherForm.LocalizarCategoria();

答案 2 :(得分:0)

您需要创建要使用的Form对象的实例:

var form = new FormThatHasTheMethod_LocalizarCategoria();
form.LocalizarCategoria();