Winforms c# - تعيين التركيز إلى الطفل الأول سيطرة TabPage

StackOverflow https://stackoverflow.com/questions/48680

  •  09-06-2019
  •  | 
  •  

سؤال

قلت Textbox متداخلة داخل TabControl.

عند تحميل النموذج ، أود أن أركز على ذلك Textbox (افتراضيا يتم تعيين التركيز إلى TabControl).

ببساطة الاتصال textbox1.focus() في Load حالة شكل لا يبدو أن العمل.

لقد كنت قادرا على التركيز عن طريق القيام بما يلي:

 private void frmMainLoad(object sender, EventArgs e)
 {
     foreach (TabPage tab in this.tabControl1.TabPages) 
     {
         this.tabControl1.SelectedTab = tab;
     }
 }

سؤالي هو:

هل هناك طريقة أكثر أناقة من فعل هذا ؟

هل كانت مفيدة؟

المحلول

التالي هو الحل:

private void frmMainLoad(object sender, EventArgs e)
{
    ActiveControl = textBox1;
}

فإن السؤال ومع ذلك يكون السبب...أنا لست متأكدا تماما ما الجواب على ذلك أحد.

تحرير:وأظن ذلك هو أن تفعل شيئا مع حقيقة أن كل شكل ، TabControl هي حاويات, ولكن لست متأكدا.

نصائح أخرى

في محاولة وضعه في Form_Shown() هذا الحدث.لأنه في وعاء ، وضع في Form_Load أو حتى شكل() منشئ لن تعمل.

محاولة استخدام textbox1.Select() بدلا من textbox1.Focus().هذا ساعدني عدة مرات.

تحتاج فقط إلى إضافة عنصر التحكم.حدد() من أجل السيطرة على هذا الرمز.لقد استخدمت هذا إلى تعيين التركيز على الضوابط خلال التحقق من صحة عندما تكون هناك أخطاء.

private void ShowControlTab(Control ControlToShow)
    {
        if (!TabSelected)
        {
            if (ControlToShow.Parent != null)
            {
                if (ControlToShow.Parent.GetType() == typeof(TabPage))
                {
                    TabPage Tab = (TabPage)ControlToShow.Parent;
                    if (WOTabs.TabPages.Contains(Tab))
                    {
                        WOTabs.SelectedTab = Tab;
                        TabSelected = true;
                        return;
                    }
                }

                ShowControlTab(ControlToShow.Parent);
            }
        }
    }

لدي المستخدم التحكم في عنصر تحكم مستخدم آخر.textbox1.حدد() عملت بالنسبة لي ولكن textbox1.التركيز() لم تنجح.

يمكنك أيضا محاولة وضع Tabstop إلى false ، textbox1.التركيز(), TabStop صحيح.

  private void ChildForm1_Load(object sender, EventArgs e)
        {
            ActiveControl = txt_fname;

        }

أنا استخدم هذا الكود يعمل بشكل جيد على الفوز تحكم علامة تبويب أو dotnetbar supertab contrl

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top