2017-02-07 2 views
1

Я создал форму аутентификации пользователя во время выполнения, которая должна иметь фокус при ее загрузке. Я хочу сосредоточиться на первом текстовом поле, которое предназначено для имени пользователя, но когда форма загружается, форма и текстовое поле не имеют фокуса. Если я нажму на форму, то фокус будет установлен в соответствующее текстовое поле.Текстовое поле, добавленное во время выполнения, не будет получать фокус

Form frm = Variables.FormCntrls.fmAuth; 

      frm.Width = 315; 
      frm.Height = 175; 
      frm.StartPosition = FormStartPosition.CenterScreen; 
      frm.FormBorderStyle = FormBorderStyle.None; 
      frm.TopMost = true; 
      frm.BackColor = Color.Black; 
      frm.ShowInTaskbar = false; 
      frm.Opacity = .9; 
      frm.Name = "userAuthentication"; 
      frm.ShowInTaskbar = false; 
      frm.KeyPreview = true; 
      frm.Visible = true; 
      frm.Enabled = true; 

      Label lb = new Label() 
      { 
       Text = "User Authentication", 
       Width = frm.Width - 20, 
       Height = 30, 
       TextAlign = ContentAlignment.MiddleCenter, 
       Left = 10, 
       Top = 10, 
       ForeColor = Color.White, 
       Font = new Font("Arial", 16, FontStyle.Bold | FontStyle.Underline) 
      }; 
      frm.Controls.Add(lb); 

      lb = new Label() 
      { 
       Text = "Username: ", 
       AutoSize = true, 
       TextAlign = ContentAlignment.MiddleCenter, 
       Left = 10, 
       Top = lb.Bottom + 20, 
       ForeColor = Color.White, 
       Font = new Font("Arial", 10, FontStyle.Bold) 
      }; 
      frm.Controls.Add(lb); 
      TextBox tb = new TextBox() 
      { 
       Name = "user", 
       Width = 200, 
       Left = lb.Right + 2, 
       Top = lb.Top, 
       ForeColor = Color.Black, 
       TabIndex = 1, 
      }; 

      frm.Controls.Add(tb); 
      tb.Select(); 


      lb = new Label() 
      { 
       Text = "Password: ", 
       AutoSize = true, 
       TextAlign = ContentAlignment.MiddleCenter, 
       Left = lb.Left, 
       Top = lb.Bottom + 20, 
       ForeColor = Color.White, 
       Font = new Font("Arial", 10, FontStyle.Bold) 
      }; 
      frm.Controls.Add(lb); 
      tb = new TextBox() 
      { 
       Name = "pass", 
       Width = tb.Right - (lb.Right + 2), 
       Left = lb.Right + 2, 
       Top = lb.Top, 
       ForeColor = Color.Black, 
       PasswordChar = '*', 
       TabIndex = 2, 
      }; 
      frm.Controls.Add(tb); 

      Button btn = new Button() 
      { 
       Name = "UserAuthenticationBtn", 
       Width = 75, 
       Height = 30, 
       Left = tb.Right - 75, 
       Top = tb.Bottom + 15, 
       Text = "Login", 
       BackColor = default(Color), 
       UseVisualStyleBackColor = true, 
       TabIndex = 3, 
      }; 
      btn.Click += new EventHandler(controlActions.btnActions.btnAuthorize); 
      frm.Controls.Add(btn); 

      btn = new Button() 
      { 
       Name = "Cancel", 
       Width = 75, 
       Height = 30, 
       Left = btn.Left - 85, 
       Top = tb.Bottom + 15, 
       Text = "Cancel", 
       BackColor = default(Color), 
       UseVisualStyleBackColor = true, 
       TabIndex = 4, 
      }; 
      btn.Click += new EventHandler(controlActions.btnActions.btnCancle); 
      frm.Controls.Add(btn); 

     } 
    } 

Любая помощь с этим будет замечательной. Я уверен, что я просто пропустил простую деталь где-то.

+0

не может воспроизвести вашу проблему. ваш код работает как шарм, я могу сразу ввести текст в первое текстовое поле. Хотя я изменил 'Form frm = Variables.FormCntrls.fmAuth;' на 'Form frm = new Form();' –

ответ

0

Попробуйте это при создании элемента управления:

tb.Focus(); 
tb.Select(); 
+0

Я пробовал это, и он не работает шов. Я думаю, проблема заключается в том, что форма не имеет фокуса по какой-то причине после ее загрузки. Если я нажму на форму, она будет сфокусирована на нужном текстовом поле. – JW12689

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