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";
私の問題は、メニュー項目の値が正しく読み取られず、問題が見つからないことです。Elev
全体として、 form から文字列値を渡して formでcategorie
使用する必要があります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
、他の行にあります。)
OMG! Categoria C
どのサブアイテムを選択しても、 ..why???が選択されます。
更新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
。