C# 在按钮触发的方法中填写表单上的组合框
首先,如果我单击一个按钮,cbBefüllen方法将执行C# 在按钮触发的方法中填写表单上的组合框,c#,winforms,sqlite,combobox,C#,Winforms,Sqlite,Combobox,首先,如果我单击一个按钮,cbBefüllen方法将执行 private void btnEntfernen_Click(object sender, EventArgs e) { FeiertageEntfernen entfernen = new FeiertageEntfernen(); entfernen.cbBefüllen(); entfernen.Show(); entfernen.Focus(); } 下面的方法只是我的表单和类之间的接口。(请不
private void btnEntfernen_Click(object sender, EventArgs e)
{
FeiertageEntfernen entfernen = new FeiertageEntfernen();
entfernen.cbBefüllen();
entfernen.Show();
entfernen.Focus();
}
下面的方法只是我的表单和类之间的接口。(请不要问,在我的代码中我有一些很好的理由;))
cbfeiertagebeffüllen(尝试)方法填充我的组合框,该组合框以“feiertagentferen”的形式存在
但在整个过程之后,我的组合框仍然是空的。上一张图片中的读取器从数据库中选择了正确的值,但不知何故它不会将其写入组合框。看起来您正在向组合框添加选项,但实际上并没有设置所选项目
为此,您需要设置cbFeiertag.SelectedIndex或cbFeiertag.SelectedValue。看起来您正在向组合框添加选项,但实际上并没有设置所选项目
为此,您需要设置cbFeiertag.SelectedIndex或cbFeiertag.SelectedValue。您的问题在这一行:
FeiertageEntfernen feiertagentfernen = new FeiertageEntfernen();
在您的cbfeiertagebfüllen()中
您创建了一个新表单,但希望填写第一段代码表单中的组合框。要解决这个问题,可以将表单的一个实例传递给filling方法
更新后的2段代码将是(第一段代码可以单独保留):
在cbBefullen中:
database.cbFeiertagebefüllen(this);
//'this' means we're passing along the form as parameter
public void cbFeiertagebefüllen(FeiertageEntfernen feiertagentfernen)
{
string Query = @"select bezeichnung from feiertage";
using (var command = new SQLiteCommand(Query, sqlite_conn))
{
if (sqlite_conn.State != ConnectionState.Open)
{
sqlite_conn.Open();
}
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
string übergabe = reader.GetString(0);
feiertagentfernen.cbFeiertag.Items.Add(übergabe);
}
}
}
}
在cbfeiertagebeüllen中:
database.cbFeiertagebefüllen(this);
//'this' means we're passing along the form as parameter
public void cbFeiertagebefüllen(FeiertageEntfernen feiertagentfernen)
{
string Query = @"select bezeichnung from feiertage";
using (var command = new SQLiteCommand(Query, sqlite_conn))
{
if (sqlite_conn.State != ConnectionState.Open)
{
sqlite_conn.Open();
}
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
string übergabe = reader.GetString(0);
feiertagentfernen.cbFeiertag.Items.Add(übergabe);
}
}
}
}
您的问题在这一行:
FeiertageEntfernen feiertagentfernen = new FeiertageEntfernen();
在您的cbfeiertagebfüllen()中
您创建了一个新表单,但希望填写第一段代码表单中的组合框。要解决这个问题,可以将表单的一个实例传递给filling方法
更新后的2段代码将是(第一段代码可以单独保留):
在cbBefullen中:
database.cbFeiertagebefüllen(this);
//'this' means we're passing along the form as parameter
public void cbFeiertagebefüllen(FeiertageEntfernen feiertagentfernen)
{
string Query = @"select bezeichnung from feiertage";
using (var command = new SQLiteCommand(Query, sqlite_conn))
{
if (sqlite_conn.State != ConnectionState.Open)
{
sqlite_conn.Open();
}
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
string übergabe = reader.GetString(0);
feiertagentfernen.cbFeiertag.Items.Add(übergabe);
}
}
}
}
在cbfeiertagebeüllen中:
database.cbFeiertagebefüllen(this);
//'this' means we're passing along the form as parameter
public void cbFeiertagebefüllen(FeiertageEntfernen feiertagentfernen)
{
string Query = @"select bezeichnung from feiertage";
using (var command = new SQLiteCommand(Query, sqlite_conn))
{
if (sqlite_conn.State != ConnectionState.Open)
{
sqlite_conn.Open();
}
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
string übergabe = reader.GetString(0);
feiertagentfernen.cbFeiertag.Items.Add(übergabe);
}
}
}
}
要使其起作用,您需要填写的组合框
应该全局声明,即在您的函数范围之外。其余的可能没问题。另外,如果您将需要在组合框中显示的值获取到主窗体,而不是调用组合框
实例2级别,则效果更好
我知道这有点混乱,简单地说,你可以做的是,将DataBase
中的值(假期描述)填入列表中。使函数在调用时返回此列表。最后,如果声明了组合框
,您可以将该列表添加为组合框
的源。要使其工作,您需要填充的组合框
应该全局声明,即在您的函数范围之外。其余的可能没问题。另外,如果您将需要在组合框中显示的值获取到主窗体,而不是调用组合框
实例2级别,则效果更好
我知道这有点让人困惑,简单地说,你能做的就是把数据库中的值(假期描述)填入一个列表中。使函数在调用时返回此列表。最后,在声明了组合框的地方,您可以将该列表添加为组合框的源在cbFeiertagebefüllen()
中填充cbfeiertage
组合框的feiertagefernen
表单实例不是随后显示的表单实例。您需要将entfernen
实例传递给cbFeiertagebefüllen()
:
在cbFeiertagebefüllen()
中填充cbfeiertage
组合框的feiertageernen
表单实例不是在此之后显示的表单实例。您需要将entfernen
实例传递给cbFeiertagebefüllen()
:
cbBefüllen可以称之为组合框的填充,但我看不出你称之为。。或者至少从代码中,如果它没有显示如何链接的话up@BugFinderfeiertagentfernen.cbFeiertag.Items.Add(übergabe)代码>不回答问题:P btentfernen\u单击不调用其他两个函数中的任何一个,或者至少不从代码中调用listed@BugFinder我不明白。btnEntfernen_单击调用cbBefüllen方法。这个方法将调用dbFeiertagbefüllen方法:/feiertagentfernen
,因为entfernen
实例一旦离开实例化它们的方法就会被销毁。您需要填充在这些方法范围之外声明的组合框。cbBefüllen可能会调用组合框填充,但我看不出您会调用它。。或者至少从代码中,如果它没有显示如何链接的话up@BugFinderfeiertagentfernen.cbFeiertag.Items.Add(übergabe)代码>不回答问题:P btentfernen\u单击不调用其他两个函数中的任何一个,或者至少不从代码中调用listed@BugFinder我不明白。btnEntfernen_单击调用cbBefüllen方法。这个方法将调用dbFeiertagbefüllen方法:/feiertagentfernen
,因为entfernen
实例一旦离开实例化它们的方法就会被销毁。您需要填写一个在这些方法范围之外声明的组合框。@EpicKip实际上我收回了这一点。OP说“cbfeiertagebefeüllen方法确实填充了我的组合框”和“我的组合框选择仍然是空的”。如果这是关于它没有填充,那么应该在问题中更清楚。OP是德语,有一些小的语法错误,让你觉得,但他没有在哪里尝试选择它,甚至,它不会将它写入组合框
@EpicKip我收回,实际上。OP说“cbfeiertagebefeüllen方法确实填充了我的组合框”和“我的组合框选择仍然是空的”。如果这是关于it而不是填充,那么应该在问题中澄清。OP是Ge吗