我有一个 ToolStripMenu 和一个表,其中有一个名为qcategory
char 类型的列。我想创建一个查询,它只选择qcategory
与所选 ToolStripMenuItem 相等的行。所以我尝试了这种方式:
String categorie;
private void categoriaBToolStripMenuItem1_Click(object sender, EventArgs e)
{
Simulare sim = new Simulare();
sim.Show();
}
public void simulareExamenToolStripMenuItem_Click(object sender, EventArgs e)
{
categorie = simulareExamenToolStripMenuItem.Selected.ToString();
}
public string getCategorie()
{
return categorie;
}
我在那里所做的是创建一个名为categorie
. simulareExamenToolStripMenuItem
是菜单中的按钮。在这里,我分配给categorie
所选项目的字符串值。在categoriaBToolStripMenu1
我实例化的表单Simulare
中,查询在哪里。之后,我创建了一个返回值的函数categorie
。然后,在Simulare
表单中,我实例化了Elev
表单(菜单在哪里)。
Elev elev = new Elev();
之后,在构造函数中,我对from formcategorie
的值进行赋值。categorie
Elev
String categorie = elev.getCategorie();
并进行查询:
String dataA = "SELECT DISTINCT * FROM questions where `qcategory` = '" + categorie + "' order by rand() limit 1";
我的问题是它没有正确读取菜单项值,我找不到问题。总而言之,我必须从 form 传递Elev
字符串值categorie
并在 form 中使用它Simulare
。有人可以帮我吗?谢谢!
更新!
现在,这是废话。这就是我的Elev
形式:
public void simulareExamenToolStripMenuItem_Click(object sender, EventArgs e)
{
//categorie = simulareExamenToolStripMenuItem.Selected.ToString();
//SimulatorManager.Categorie = simulareExamenToolStripMenuItem.DropDownItems.ToString();
foreach (ToolStripMenuItem subItem in simulareExamenToolStripMenuItem.DropDownItems) //dropdown is the name of the **parent** of the dropdown. Without your full code I can't tell you what to put there
{
if(subItem.Checked)
{
SimulatorManager.Categorie = subItem.Text;
}
}
}
private void categoriaBToolStripMenuItem1_Click(object sender, EventArgs e)
{
Simulare sim = new Simulare();
sim.Show();
}
这就是我的Simulare
形式:
String categorie = SimulatorManager.Categorie;
在构造函数中:
String dataA = "SELECT DISTINCT * FROM questions where `qcategory`='" + categorie + "' order by rand() limit 1";
但不显示存在的行CategoriaB
,它显示值所在的行Categoria C
。在Console.WriteLine(categorie)
它显示Categoria C
,而不是CategoriaB
它应该。(Categoria C
是Categoria B
来自qcategory
列的值,但在另一行。)
天哪!无论我选择什么子项目,它都会选择Categoria C
..为什么???
更新 2
这是我的Elev
形式:
public void simulareExamenToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (ToolStripMenuItem subItem in simulareExamenToolStripMenuItem.DropDownItems)
{
if(subItem.Checked)
{
SimulatorManager.Categorie = subItem.Text;
}
}
}
private void categoriaBToolStripMenuItem1_Click(object sender, EventArgs e)
{
Simulare sim = new Simulare();
sim.Show();
}
private void categoriaCToolStripMenuItem1_Click(object sender, EventArgs e)
{
Simulare sim = new Simulare();
sim.Show();
}
这就是我的Simulare
形式:
public Simulare() // maine constructor
{
String categorie = SimulatorManager.Categorie;
Console.WriteLine(categorie);
dataA = "SELECT DISTINCT * FROM questions where `qcategory`='" + categorie + "' order by rand() limit 1";
}
无论我选择什么子项,它都会从菜单中选择包含最后一个子项的字符串值的行。( Categoria C
) 如果我点击Categoria B
,我会收到来自 的问题Categoria C
。