C# 如何让usercontrol将值从它启动的表单传递到另一个表单?
我正在创建这个简单的视频游戏订购应用程序。我已经创建了一个名为productControl的userControl。代码:C# 如何让usercontrol将值从它启动的表单传递到另一个表单?,c#,winforms,C#,Winforms,我正在创建这个简单的视频游戏订购应用程序。我已经创建了一个名为productControl的userControl。代码: public partial class productControl : UserControl { private string pName; private float pPrice; private string pDesc; private string pImgUrl; public productControl() =
public partial class productControl : UserControl
{
private string pName;
private float pPrice;
private string pDesc;
private string pImgUrl;
public productControl() => InitializeComponent();
public string getName
{
get => pName;
set
{
pName = value;
productName.Text = pName;
}
}
public float getPrice
{
get => pPrice;
set
{
pPrice = value;
productPrice.Text = pPrice.ToString("c");
}
}
public string getDescription
{
get => pDesc;
set
{
pDesc = value;
descriptionText.Text = pDesc;
}
}
public string getImage
{
get => pImgUrl;
set
{
pImgUrl = value;
prodImage.Load(pImgUrl);
prodImage.SizeMode = PictureBoxSizeMode.StretchImage;
}
}
public int getProdId { get; set; }
private void buyButton_Click(object sender, EventArgs e)
{
MessageBox.Show(pPrice.ToString("c"));
orderConfirmation o = new orderConfirmation();
o.Show();
}
}
和一个名为accountMain的Windows窗体。它从SQL检索数据并调用productControl来填充数据
private string productRetriever = "SELECT prodId, prodName, prodPrice, prodImg, prodDesc FROM [dbo].[products]";
private void accountMain_Load(object sender, EventArgs e)
{
createFunctions();
}
private void createFunctions()
{
connection.Open();
SqlCommand retProduct = new SqlCommand(productRetriever, connection);
panel1.Controls.Clear()
using (var reader = retProduct.ExecuteReader())
{
int count = 0;
while(reader.Read())
{
p[count] = new productControl();
p[count].Name = count.ToString();
p[count].getProdId = (int)reader[0];
p[count].getName = (string)reader[1];
p[count].getPrice = (float)reader[2];
p[count].getImage = (string)reader[3];
p[count].getDescription = (string)reader[4];
panel1.Controls.Add(p[count]);
count++;
}
}
connection.Close();
}
在上面,我使用while循环在accountMain表单内使用productControl填充panel1。当我单击userControl中的“Buy”按钮时,如何让userControl隐藏accountForm并显示另一个表单(将值传递到新表单,如标题和价格)
此外,我还不熟悉如何将SQL实现到C中#使用executeReader()在accountMain中填充panel1是正确的方法还是有更好的方法从SQL中检索数据并在userControl中显示?您需要使用form类的实例。请看我的两个表单项目:像UserControl这样的小兵永远不会要求主窗口的外观。提出一个事件,大狗可以响应它。你为什么用小写的p来命名?另外,请不要用“get”来命名您的属性。
getFoo=“foo”
有什么意义吗?不,没有Foo=“Foo”
更有意义getFoo
听起来更像一个函数或方法,而不是一个变量,它会像我做getFoo()
一样不断地把我甩在脑后,我会出错。这是WinForms、ASP.NET WebForms还是WPF?