PDA

View Full Version : مشکل در focus کردن روی یک کنترل در رویداد tab_enter



hdv212
چهارشنبه 26 اردیبهشت 1386, 21:00 عصر
سلام
من توی فرمم چند تا tab دارم، میخوام وقتی tab مورد نظرم active شد، کرسر موس روی یه textbox بره، من این کد رو در رویداد tab_enter نوشتم :

private void tab_search_Enter(object sender, EventArgs e)
{
this.tbr_txt_search.Focus();
}

ولی هیچ اتفاقی صورت نمیگیره، احتمالا رویدادم مناسب نیست یا قبل از فراخوانی تابع focus مربوط به کنترل tbr_txt_search، باید یه سری عملیات دیگه انجام بدم، بالاخره منتظر میمونم دوستان چی میگن، مرسی

choobin84
چهارشنبه 26 اردیبهشت 1386, 21:44 عصر
وقتی tab به textBox2 منتقل میشه، textBox3 ، فوکاس میشه.
البته منظور از اکتیو رو نفهمیدم

hdv212
چهارشنبه 26 اردیبهشت 1386, 22:06 عصر
مرسی از پستت، منظورم از active یعنی روی tab کلیک کنیم تا اون باز بشه یا فعال بشه، در ضمن این برنامه ی شما که tab نداره، کار خاصی هم انجام نمیده، یعنی اون چیزی که من میخوام نیست، به هر حال زحمت کشیدی و بسیار متشکرم

Sorenaa_s
چهارشنبه 26 اردیبهشت 1386, 22:47 عصر
دوست عزیز اینو یه نگاهی بنداز.

Seivan
چهارشنبه 26 اردیبهشت 1386, 22:55 عصر
اگه TabIndex مربوط به کنترل ها را درست Set نمایی و همچنین TabStob مربوط به tabPageی را که textBox1 در آن قرار دارد را false بذاری خود به خود textBox1 انتخاب می شود. به این شرط که مقدار TabIndex مربوط به textBox1 از همه کنترل های دیگر موجود در tabPage آن کمتر باشد ( مثلا مقدار صفر). البته باید توجه کرد اگر textBox1 در درون کنترل دیگری مانند Panel قرار داشته باشد ابتدا باید TabIndex مربوط به Panel را کمترین مقدار قرار دهید.

یا

هنگام رویداد OnLoad مربوط به tabPage حاوی textBox1 ، textBox1 را انتخاب کن. با استفاده از textBox1.Focus() یا textBox1.Select()

البته TabIndex گذاری مربوط به کنترل تا حدی خود جای بحث دارد ، که اینجا مختصرا آنرا تشریح می کنم:
فرض کنید form1 داریم.
با توجه به اینکه کنترل ها درون فرم قرار می گیرند. اما درون بعضی از کنترل ها مانند Panel ، GroupBox و ... شما می توانید کنترل های دیگری را نیز قرار دهید،. بنابر این روابط کنترل های درون فرم از لحاظ Child و Parent به صورت درختی خواهد بود که ریشه آن درخت form1 است. حال شما درخت را پیمایش سطحی کنید و tabIndex مربوط به کنترل ها را به صورت صعودی قرار دهید.

ghafoori
چهارشنبه 26 اردیبهشت 1386, 23:07 عصر
دوست عزیز شما می تونید از رویداد SelectedIndexChanged استفاده کنید مثل یک همچین کدی


Private Sub TabControl1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
If TabControl1.SelectedIndex = 0 Then
Me.TextBox5.Focus()
Else
Me.TextBox2.Focus()
End If
End Sub

hdv212
پنج شنبه 27 اردیبهشت 1386, 00:03 صبح
بچه ها ممنونم ازتون، مخصوصا شما ghafoori و Sorenaa_s عزیز، مشکلم حل شد، بازم ممنون از همه