我需要一些关于最佳方法的说明,我有一些伪代码。
/*form needs to be a drop down as below*/
// -------------------------------
// | X |
// -------------------------------
// | "chose your option" |
// | |
// | [choice 1 [v]] |
// | |
// | [ok] [cancel] |
// -------------------------------
int optionchosen = confirmoptionbox();
if (optionchosen==1){
//do something
}
if (optionchosen==2){
// do something else
}
if (optionchosen==3){
// third way
}
//etc etc
现在,我知道如何使用新表格(等等),但我真的想知道是否有更“优雅”的选项,不涉及大量的东西
答案 0 :(得分:1)
设计一个表单。将其打开为模态窗口并从NewForm
获取值NewForm nf=new NewForm();
nf.ShowDialog();
答案 1 :(得分:1)
我真的没有看到自己写表格的问题在哪里。但是你写的伪代码几乎是完美的,事实上它是最好的方法。虽然我打算写你的伪代码可以改进。 说到表单,您可以通过这种方式构建它以使其可重用:
class myForm : Form{
public int Result;
private Label lblText;
private Button btnOk, btnCancel;
private CheckBox[] checkboxes;
public myForm(string text, params string[] choicesText){
//set up components
lblText = new Label(){
Text = text,
AutoSize = true,
Location = new Point(10, 10)
//...
};
checkboxes = new CheckBox[choicesText.Length];
int locationY = 30;
for(int i = 0; i < checkboxes.Length; i++){
checkboxes[i] = new CheckBox(){
Text = choicesText[i],
Location = new Point(10, locationY),
Name = (i + 1).ToString(),
AutoSize = true,
Checked = false
//...
};
locationY += 10;
}
btnOk = new Button(){
Text = "OK",
AutoSize = true,
Location = new Point(20, locationY + 20)
//...
};
btnOk += new EventHandler(btnOk_Click);
//and so on
this.Controls.AddRange(checkboxes);
this.Controls.AddRange(new Control[]{ lblText, btnOk, btnCancel /*...*/ });
}
private void btnOk_Click(object sender, EventArgs e){
Result = checkboxes.Where(x => x.Checked == true).Select(x => Convert.ToInt32(x.Name)).FirstOrDefault();
this.Close();
}
}
然后以主要形式:
using(myForm form = new myForm("Select a choice", "choice 1", "choice 2")){
form.ShowDialog();
int result = form.Result;
switch(result){
case 1: MessageBox.Show("You checked choice 1") ; break;
case 2: MessageBox.Show("You checked choice 2") ; break;
default: MessageBox.Show("Invalid choice"); break;
}
}
<强> PS:强>
在这里,我使用了复选框,但您可以更改它并添加一个带有下拉样式的组合框,然后您将拥有所需的内容。