2014-01-19 4 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

Только 3-й блок кода, который вы дали. Ну, я предпочитаю другой путь, так как он сохраняет кодовое пространство. Поскольку он работает как минимум +1 :) – puretppc

+1

да, фокус не работает, потому что он ждет результата ShowDialog и не переходит к следующей строке. В любом случае вы можете использовать метод Focus, чтобы программно фокусировать ваше текстовое поле в других случаев =). –

 Смежные вопросы

  • Нет связанных вопросов^_^