C#将formname.designer.cs中生成的数据表设置为静态
我想知道是否可以修改formname.designer.cs并将从设计模式生成的变量设置为私有的静态变量:C#将formname.designer.cs中生成的数据表设置为静态,c#,winforms,static,element,C#,Winforms,Static,Element,我想知道是否可以修改formname.designer.cs并将从设计模式生成的变量设置为私有的静态变量: private dtableAdapters.llist nameTable;// this to become static public static dtableAdapters.llist nameTable;//like this 我在这里读到这不是一个好方法。 也许我可以用另一种方式。以下是我想做的: 我有一个包含更多表单的表单,在面板中打开。一个表单包含一些带有数据库值
private dtableAdapters.llist nameTable;// this to become static
public static dtableAdapters.llist nameTable;//like this
我在这里读到这不是一个好方法。
也许我可以用另一种方式。以下是我想做的:
我有一个包含更多表单的表单,在面板中打开。一个表单包含一些带有数据库值的组合框。问题是,当我从另一个带有文本框的表单向数据库添加更多值时,需要再次填充组合框。我想,如果我在添加一些值后立即更新组合框,可能会很容易。
(combobox和textbox——它们在数据库中添加由combobox显示的值——形式不同)
你还有别的想法吗?我也尝试过在点击组合框时再次填充它,但是因为我有更多的组合框,所以当我快速点击一个到另一个组合框时,会出现一些致命错误
编辑:作为最后一种方法:我可以添加一个按钮并在按下按钮时填充组合框,但我想自动完成
(winforms不是web表单)一种方法是在添加值时在FormA上触发事件。
表格B可以订阅活动并更新列表。 唯一棘手的一点是FormB需要引用FormA来连接事件 像这样的 形式 表格B
让我看看我是否明白。。。表单A有一个文本框,用于向数据库中的表添加值。表单B有一个组合框,其中包含表中的值。通过表格a添加值后,您希望表格B的组合框自动反映最新的值。是的,您理解得很好。这样做的可能性是什么?但是FormB怎么知道事件被触发了呢?其中被称为HookupListener(param)?无法添加引用,因为表单2不是由表单1启动的。Form0启动Form1,也启动Form2。似乎必须调用的是静态方法?为什么需要静态方法?如果Form0启动两个表单,它可以将FormA的引用传递给FormB的HookupListener方法。
public delegate void DataAddedEventHandler(object sender, EventArgs e);
public partial class FormA : Form
{
public event DataAddedEventHandler DataAdded;
private void AddButton_Click(object sender, EventArgs e)
{
//do The database stuff...
//fire the event
OnDataAdded();
}
private void OnDataAdded()
{
if (DataAdded != null)
{
DataAdded(this, new EventArgs());
}
}
public void HookupListener(FormA dataform)
{
//hook up the event to the handler
dataform.DataAdded += new DataAddedEventHandler(dataform_DataAdded);
}
void dataform_DataAdded(object sender, EventArgs e)
{
//refresh the combo box
}