2014-01-19 19 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結果,並且不會轉到下一行。仍然可以使用焦點方法以其他方式以編程方式將焦點置於文本框中個案=)。 –

相關問題