【发布时间】:2019-05-16 07:23:49
【问题描述】:
我能否从两个父级(FrmMasterItem 和 FrmMasterPackage)获取一个包含 DataGridView 的表单 (FrmItemSearch) 的查询值并将所选值传递给其父级表单?
我已经尝试过让FrmItemSearch 从FrmMasterItem 获取一些数据,它可以显示数据,但我希望FrmItemSearch 也从FrmMasterPackage 获取数据,所以我只需要一个带有DataGridView 执行所有的搜索操作。
//this is my MasterItem Form
public partial class FrmMasterItem : Form
{
public string myQuery { get; set; }
public FrmMasterItem() { InitializeComponent(); }
public void SearchItemCode_Click(object sender, EventArgs e)
{
this.myQuery = "select * from InItemMst";
FrmItemSearch fcd = new FrmItemSearch(this);
fcd.ShowDialog();
}
}
//this is my MasterPackage Form
public partial class FrmMasterPackage : Form
{
public string sQuery { get; set; }
public FrmMasterPackage() { InitializeComponent(); }
public void SearchItemCode_Click(object sender, EventArgs e)
{
this.sQuery = "select * from InPackagehdr";
//I want to get this query on FrmSearchItem
}
}
//this is my Item Search Form
public partial class FrmItemSearch : Form
{
private FrmMasterItem f_mb;
public FrmItemSearch(FrmMasterItem fmb)
{
f_mb = fmb;
InitializeComponent();
}
private void FrmItemSearch_Load(object sender, EventArgs e)
{
MySqlConnection conn = DBUtils.GetDbConnection();
conn.Open();
string query = this.f_mb.myQuery;//this is only MasterItem Data i want to make some selection for MasterPackage here so the Gridview can View MasterPackage data using sQuery Value from FrmMasterPackage
MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
BindingSource bSource = new BindingSource();
bSource.DataSource = dt;
dataGridView1.DataSource = bSource;
}
}
【问题讨论】:
-
f_mb是 not a nice 名称。 -
我不知道我应该使用什么名称,只是测试一些代码 :) 顺便说一句,我是 C# 中的新手
-
您可以在子(search 表单)构造函数中传递当前调用者(master 表单之一)查询字符串。给予或接受你现在正在做的事情,只需传递一个字符串而不是表单。或者让你的Form对象实现一个contract resolver接口,暴露一个know属性:设置为查询字符串的属性,所以你不需要知道是什么Form打开了Search,你只需要知道它必须实现该接口,从而公开该属性。有问题的表单可以是 Seach 所有者。 (您创建一个使用
var someForm = new SomeForm(this)指定所有者的表单) -
感谢您的建议,但我需要从每个主表单中获取超过 1 个值,所以我只想知道是否有可能在我的搜索表单中获取 2 个主表单
-
定义一个具有多个属性的接口 :) 或返回复杂对象(类、JSON 等)的属性/方法。