2014-01-19 20 views
1
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

我只是点击一个按钮来调用该方法等。现在,您注意到,文本框未被选中。我该如何做到这一点,如果这个方法被调用,它会默认选中文本框,而不必点击它或制表符?

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

+0

查找TabIndex属性 –

+1

使用'value.Focus()'(http://msdn.microsoft.com/library/system.windows.forms.control.focus.aspx)。 – darthmaim

+0

只是一个侧面说明,但你可能想在PascalCase中命名你的方法:http://msdn.microsoft.com/en-us/library/x2dbyw72(v=vs.71).aspx :) – pcnThird

回答

2

控件之间用于标签的顺序是由物业TabIndex确定。该属性由您添加控件的顺序自动确定(如果您不手动更改它)具有TabIndex = 0的控件将集中在窗体的开头(当然如果控件可以被聚焦)

尝试用

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

哇,非常感谢:) – puretppc

2

你的意思是Focused?像这样:

textBox1.Focus(); 

在你的显示对话框后写上这段代码,它应该可以工作。

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

或者,如果它不工作,尝试打开您的提示前设置ActiveControl属性:

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

只有第三块你给的代码作品。哦,我更喜欢另一种方式,因为它节省了代码空间。因为它的工作原理至少为+1 :) – puretppc

+1

是的,焦点不起作用,因为它正在等待ShowDialog结果,并且不会转到下一行。仍然可以使用焦点方法以其他方式以编程方式将焦点置于文本框中个案=)。 –

相关问题