如何设置它以便在调用提示时选择文本框?

时间:2014-01-19 21:15:03

标签: c# winforms tabindex

public int dialog()
{
    Form prompt = new Form(); // creates form

    //dimensions
    prompt.Width = 300;
    prompt.Height = 125;

    prompt.Text = "Adding Rows"; // title

    Label amountLabel = new Label() { Left = 75, Top = 0, Text = "Enter a number" }; // label for prompt
    amountLabel.Font = new Font("Microsoft Sans Serif", 9.75F);
    TextBox value = new TextBox() { Left = 50, Top = 25, Width = prompt.Width / 2 }; // text box for prompt
    Button confirmation = new Button() { Text = "Ok", Left = prompt.Width / 2 - 50, Width = 50, Top = 50 }; // ok button
    confirmation.Click += (sender, e) => { prompt.Close(); }; // if clicked it will close

    prompt.AcceptButton = confirmation; // enter

    // adding the controls
    prompt.Controls.Add(confirmation);
    prompt.Controls.Add(amountLabel);
    prompt.Controls.Add(value);
    prompt.ShowDialog();

    int num;
    Int32.TryParse(value.Text, out num);
    return num;
}

这是我的提示在被称为

时的样子

Prompt

我只是点击一个按钮来调用该方法。现在您注意到,未选中文本框。如何调用此方法,如果调用此方法,它将使文本框默认选中,而不必单击它或选项卡到它?

(我知道这是次要的,但每个细节看起来都会更好)

2 个答案:

答案 0 :(得分:2)

你的意思是Focused?像这样:

textBox1.Focus();

在显示对话框后编写此代码,它应该可以正常工作。

prompt.ShowDialog();
prompt.Controls.OfType<TextBox>().First().Focus();

如果不起作用,请在打开提示之前尝试设置ActiveControl属性:

promt.ActiveControl = value;
prompt.ShowDialog();

答案 1 :(得分:2)

控件之间用于标签的顺序由属性TabIndex决定。此属性由添加控件的顺序自动确定(如果不手动更改)TabIndex = 0的控件将集中在窗体的开头(当然,如果控件可以聚焦)< / p>

尝试

prompt.Controls.Add(value);
prompt.Controls.Add(confirmation);
prompt.Controls.Add(amountLabel);
prompt.ShowDialog();