2013-04-13 3 views
0

Я пытаюсь создать динамические текстовые поля в приложении winforms. Он правильно создается, не делает это правильно. Что я делаю неправильно здесь.Проблема с интервалом динамических текстовых полей

private void createTextBoxes() 
{ 

    int width = 69; 
    int height = 20; 
    int spacing = 32; 
    TextBox[] subAmt = new TextBox[12]; 
    for (int i = 0; i <= 11; ++i) 
    { 
     subAmt[i] = new TextBox(); 
     subAmt[i].Size = new Size(width, height); 
     subAmt[i].Margin = new Padding(3); 
     subAmt[i].Location = new Point(279, (i * height) + spacing); // <-- this is should space it out but does not 
     subAmt[i].KeyPress += new KeyPressEventHandler(txtAmt_KeyPress); 

     plSubscription.Controls.Add(subAmt[i]); 

    } 
} 

У меня есть подобный код для выпадающего списка это, кажется, пространства правильно

private void createCombo() 
{ 

    int width = 79; 
    int height = 24; 
    int spacing = 28; 
    for (int i = 0; i <= 11; ++i) 
    { 
     ComboBox newBox = new ComboBox(); 
     newBox.Name = "SubYears"; 
     newBox.DropDownStyle = ComboBoxStyle.DropDownList; 
     newBox.Size = new Size(width, height); 
     newBox.Location = new Point(145, (i * height) + spacing); 

     plSubscription.Controls.Add(newBox); 
     fillComboData(newBox); 
    } 
} 

Это скриншот из выпадающих списков и текстовых полей

enter image description here

+1

Ваш код работает отлично, любезно приложить ту скриншоте, что вы хотите. – Shaharyar

+0

Не уверен, могу ли я прикрепить скриншот, но проблема в том, что между каждым текстовым полем нет интервала – Adrian

+0

. Итак, вы хотите, чтобы каждый 'textbox' перед полем со списком? Если вы не можете приложить скриншот, тогда объясните в простых словах, что вы хотите. – Shaharyar

ответ

0

Я просто заменил свои createTextBoxes() эти значения:

int width = 69; 
int height = 20; 
int spacing = 32; 

с createCombo() значениями:

int width = 79; 
int height = 24; 
int spacing = 28; 

и я получил FO слабый результат.

enter image description here

+0

Странно. Я сделал это раньше, но он не работал, теперь он это делает. благодаря – Adrian

0

Я проверить свой код и его работает. в чем проблема?


Вы не можете изменить высоту текстового поля в однолинейном режиме, а в своем коде вы установите его ниже фактической высоты.


Используйте это:

 int width = 69; 
     int height = 10; 
     int spacing = 0; 
     TextBox[] subAmt = new TextBox[12]; 
     for (int i = 0; i <= 11; ++i) 
     { 
      subAmt[i] = new TextBox(); 
      subAmt[i].Size = new Size(width, height); 
     // mycode 
      height = subAmt[i].Height; 
     // *** 
      subAmt[i].Margin = new Padding(3); 
      subAmt[i].Location = new Point(279, (i * height) + spacing); // <-- this is should space it out but does not 

      this.Controls.Add(subAmt[i]); 
     } 
+0

См. Мой ответ на @shaharyar – Adrian

+0

Я редактирую свой ответ. Проверь это. –

+0

не уверен, если я понял вас, но попробую. Я даже добавил Padding – Adrian

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