2014-01-20 5 views
2
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 = 50, Top = 0, Text = "Enter a number from 1-50" }; // 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 

    prompt.KeyPreview = true; 
    prompt.KeyDown += (sender, e) => 
    { 
     if (e.KeyCode == Keys.Escape) prompt.DialogResult = DialogResult.Cancel; // user presses ESC key to close 
    }; 

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

    // returning and checking if int block 
    int num; 
    Int32.TryParse(value.Text, out num); 
    return num; 
} 

Это полный код. Короткая версия кода:Почему мой ярлык не отображает весь текст?

Label amountLabel = new Label() { Left = 50, Top = 0, Text = "Enter a number from 1-50" }; 
prompt.Controls.Add(amountLabel); 

My Prompt

Проблема заключается в том, что она будет отображаться только до «Введите номер». По какой-то причине он не отобразит полный текст. Я попробовал сократить «E», и это сработало. Я даже попробовал «Введите номер», но он все еще не отображался полностью.

+0

Что произойдет, если 'Label.Left = 0'? – dursk

+0

@mattm Это для лейбла Left? – puretppc

+0

Да. Не уверен, что это решение, но похоже на первое очевидное устранение неполадок. – dursk

ответ

5

Вы можете включить AutoSize, который устанавливается в true по умолчанию, если вы создаете его с помощью конструктора:

Label amountLabel 
    = new Label { AutoSize = true, Left = 50, Top = 0, Text = "Enter a number from 1-50" }; 
+0

+1 для AutoSize. очиститель, IMO! – pcnThird

+0

OMG это действительно работает спасибо :) – puretppc

+2

Спасибо pcnThird. Нет проблем puretppc. Легко пропустить, так как сброс его в форме во время разработки автоматически устанавливает его для вас, даже если это не поведение по умолчанию. –

1

Установите ширину метки:

Label amountLabel = new Label() { Left = 75, Top = 0, Width = 1000, Text = "Enter a number from 1-50" }; 

Не делать ширина что широкий, хотя. Я просто хотел убедиться, что текст подходит без тестирования разных значений.

Я был удивлен, что он не регулировал ширину автоматически.

+0

Насколько велика ширина по умолчанию без нужно установить его? – puretppc

+1

Я думаю, что это 100. Это то, что он говорит на моей машине, когда я использую 'MessageBox.Show (amountLabel.Width.ToString());' – pcnThird

+0

Да, это 100. Но откуда мы знаем, насколько большой ярлык в любом случае? Mine - всего 24 символа «Введите число» – puretppc

0

Set AutoSize свойство ярлыка к действительности.

Label amountLabel = new Label() { AutoSize=true, Left = 50, Top = 0, Text = "Enter a number from 1-50" }; 
Смежные вопросы