【发布时间】:2016-12-08 09:15:45
【问题描述】:
先看我的代码
namespace HealthClub
{
public partial class frmTrainerMaster : Form
{
DataTable dt = new DataTable();
frmHome Home = new frmHome();
public frmTrainerMaster()
{
InitializeComponent();
}
}
private void frmTrainerMaster_Load(object sender, EventArgs e)
{
FillValues("UserNameText");
}
public void FillValues(string UserName)
{
DataTable DT;
SqlCommand cmd = new SqlCommand();
try
{
cmd.Connection = Connections.Connection[UserName];
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "TrainerMaster_pro";
cmd.Parameters.AddWithValue("Option", "FillValues".Trim());
if (Connections.Connection[UserName].State == ConnectionState.Closed)
Connections.Connection[UserName].Open();
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DT = new DataTable();
adp.Fill(DT);
lblId___.Text = DT.Rows[0][0].ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
cmd.Parameters.Clear();
cmd.Dispose();
Connections.Connection[UserName].Close();
}
}
}
现在我正在像这样的另一个类中调用 FillValues()
class AnotherClass
{
public void TestMethod(string FormName)
{
Type tp = Type.GetType("HealthClub." + FormName);
object myobj = Activator.CreateInstance(tp);
MethodInfo method = myobj.GetType().GetMethod("FillValues");
object[] parametersArray = new object[] { UserName };
method.Invoke(myobj, parametersArray);
}
}
如果您查看 FillValues(),我将数据库值分配给标签。当我在页面加载的第一堂课中调用它时,它工作正常。
但是当我从第二类调用方法时,方法调用但数据库值没有分配给标签。
我需要做哪些额外的努力?
【问题讨论】:
-
好吧,您正在创建表单的新实例 - 但从未真正显示它。我的猜测是您应该使用表单的 existing 实例...
-
你能简单介绍一下吗?
-
嗯,我已经解释了我能做的一切——我不知道我还能说什么。如果您从不显示表单,那么创建表单就没有多大意义,而这正是您目前正在做的事情。
-
你的意思是我必须在调用方法时传递现有的第一类实例?
-
是的。否则,您如何期望知道您要填充哪种表单?
标签: c# .net reflection