PDA

View Full Version : فوکوس روی فرم



saeedhushmand
سه شنبه 31 مرداد 1391, 10:45 صبح
دوستان جه کار کنم روی فرم فوکوس بشه از
Acc_Hesab.Focus(); استفاده کردم اما عمل نمی کنه...

Y_Safaiee
سه شنبه 31 مرداد 1391, 10:51 صبح
با سلام خدمت شما دوست عزیز

منظورتون از روی فرم Focus شه چیه؟برای فوکوس روی فرم از this.Focus(); استفاده میشه,اگه منظورتونم کد نویسی برای فرمه KeyPreview رو True کنید و با رویدادهای KeyDown کلیدها رو به رویدادهاتون اختصاص بدین.

موفق باشین
بایت بایت

saeedhushmand
سه شنبه 31 مرداد 1391, 10:58 صبح
دوست عزیز من چند فرم روی فرم اصلی show کردم و به ازای هر فرم یک ایتم به لیست باکس اضافه کردم حالا می خوام روی هر ایتم رفتم فرم مربوط به اون ایتم روش فوکوس بشه و بیاد جلو اما این عمل انجام نمی شه

برای باز کردن فرم

Forms.Acc_NemoodarDHeab2 frm = new Acc_NemoodarDHeab2();
listBox1.Items.Add(frm.Text);
frm.Show(this);


و برای فوکوس کردن فرم با کد زیر



Forms.Acc_Hesab Acc_Hesab = new Forms.Acc_Hesab();
if (listBox1.SelectedItem == Acc_Hesab.Text)
{
Acc_Hesab.Focus();
}
Forms.Acc_NemoodarDHeab2 Acc_NemoodarDHeab2 = new Forms.Acc_NemoodarDHeab2();
if (listBox1.SelectedItem == Acc_NemoodarDHeab2.Text)
{
Acc_NemoodarDHeab2.Focus();
}

Y_Safaiee
سه شنبه 31 مرداد 1391, 11:14 صبح
با سلام مجدد

چرا کار خودتو سخت کردی

این یه سمپل کده و آسونترین راهه که الان برات نوشتم ازش الهام بگیر و کد خودتو درست کن,من در اینجا از فرمی که خودم دارم واسط ساختم و نشونم دادم :



namespace mdi
{
public partial class Form1 : Form
{
int c=0;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
c++;
frm.Name = "f" + c;
frm.Text = "form" + c;
listBox1.Items.Add(frm.Text);
frm.Show();
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Text == listBox1.Text) frm.Focus();
}
}
}
}


موفق باشی
بایت بایت

مهرداد صفا
سه شنبه 31 مرداد 1391, 12:10 عصر
سلام

دوستان جه کار کنم روی فرم فوکوس بشه از
Acc_Hesab.Focus(); استفاده کردم اما عمل نمی کنه...

متودهای Activate,Select,BringToFront را امتحان کنید.

h_assefi
سه شنبه 31 مرداد 1391, 12:14 عصر
می تونی از متد show استفاده کنی حتما فرم ها نباید بسته باشه تا از این متد استفاده کنی

mostafalfc
دوشنبه 24 مهر 1391, 19:14 عصر
سلام
من یه برنامه نوشتم که فرم ام دی ای داره
خب؟
بعد این برنامه چندتا فرم فرزند داره توش هر فرم هم یه کلید شورتکات از رو کیبورد داره
میخوام مثلا وقتی f1 رو زدم فرم 1 ظاهر بشه
بعدش دوباره که f1 زدم دیگه ظاهر نشه چون یک بار این فرم باز شده و به جای اینکه این فرم دوباره باز بشه میخوام فوکوس بیاد رو این فرمه
ممنون میشم کمک کنید خیلی واجبه

asadegha
دوشنبه 24 مهر 1391, 21:09 عصر
یه متغیر استاتیک تعریف می کنی توی فرم فرزند.
توی سازنده اون مقدارشو افزایش میدی تا تعدادشو بشماره.

توی فرم اصلی keyPreview رو true می کنی. موقع فراخونی فرم فرزند بررسی میکنی چندتا باز شده. اگه تعدادش زیاد بود میگی باز نکن.

کلا باید با فرمت صحبت کنی و گرنه حرفتو گوش نمیده:لبخند::چشمک:


سمپل گذاشتم برات. سوال داشتی بگو. البته حرفه ایی ترش اینه که یه متغیر استاتیک private تعریف کنی. یه پروپرتی استاتیک درست کنی که مقدار این متغیر رو برگردونه. اینطوری امنیتش بیشتره.

94030

mostafalfc
سه شنبه 25 مهر 1391, 09:04 صبح
آقا دمت گرم
راه حلت خوبه ولی من تعداد فرم هام زیاده و یه خورده برنامه گیج کننده میشه اینطوری
به هر حال ممنون از راهنمایی و زحمتی که کشیدی
قربونت برم

mostafalfc
سه شنبه 25 مهر 1391, 09:54 صبح
یک تابع براتون نوشتم :

private Boolean IsOpened(string Name)
{
foreach (Form frm in Application.OpenForms)
if (frm.Name == Name)
if (frm.Created == true)
{
frm.Show();
frm.Activate();
return true;
}
return false;
}

نمونه استفاده :

Form2 frm2 = null;
if (IsOpened("Form2") == false)
{
frm2 = new Form2();
frm2.Show();
}

Form3 frm3 = null;
if (IsOpened("Form3") == false)
{
frm3 = new Form3();
frm3.Show();
};

Form2 frm22 = null;
if (IsOpened("Form2") == false)
{
frm22 = new Form2();
frm22.Show();
}



من از این روش استفاده کرده خیلی عالی بود