我想使用其他形式的一些公共方法。我想知道是否有办法做到这一点,我试图将方法和表格公开,但当我尝试将其称为另一种形式的方法时,它只是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()
}
但我不能,它只是找不到方法。
答案 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();