با سلام.
من در سی شارپ 2005 کار می کنم شما به سی پلاس 2003 تبدیل کنید کدها را.
من آمدم یک پروژه ساختم و یک فرم اضافه کردم. بعد در رویداد کلیک دکمه در فرم 1 این کد را نوشتم:
کد:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.Activate();
}
هیچ اتفاقی نمی افتد. ولی با Show به جای Activate باعث ظهور فرم 2 می شود.
بعد آمدم 3 دکمه قرار دادم و شی را هم داخل دکمه ها تعریف نکردم بلکه داخل کلاس فرم یک تعریف کردم(کد زیر):
کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace events
{
public partial class Form1 : Form
{
Form2 frm = new Form2();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
frm.Show();
}
private void button2_Click(object sender, EventArgs e)
{
frm.Activate();
}
private void button3_Click(object sender, EventArgs e)
{
frm.Hide();
}
}
}
در بالا می بینید که هر دکمه یکی از 3 کار را می کند. نمایش(و لود اگر لازم بود طبق گفته سایت پست قبل) و مخفی کردن و فعال سازی. کاری که دکمه فعال سازی می کرد برای من این بود که اگر فرم 2 زیر بود آنرا به روی فرم 1 می انداخت. یعنی فرم فعال می کرد.
همچنین می توانید در فرم 2 برای رویدادهای مختلف فرم کدی بنویسید و نام همان رویداد را بنویسید و ببینید با Show یا Activate کدام رویدادها اتفاق می افتد. من از چاپ در کنسول استفاده کردم که در برنامه های ویندوزی در پنجره Output در وِیژوال استودیو چاپ می شود. اگر خاموش بود از منوی ویو روشن کنید.( البته فکر کنم راه درست تر از System.Diagnostics باشد. در این مورد به پست بعدی مراجعه کنید)
نتیجه :
با show هم لود می شود و هم اکتیویت می شود.
وقتی روی فرم 1 کلیک کنیم رویداد Deactivate فرم 2 اتفاق می افتد.
با زدن دکمه دوم روی فرم 1 یعنی دکمه اکتیو کردن رویداد اکتیویت فرم 2 اتفاق می افتد.
برای بقیه رویدادها هم کدی مشابه بنویسید و بررسی کنید.
کد فرم 2 را در زیر می آورم:
کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace events
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Activated(object sender, EventArgs e)
{
Console.WriteLine("Form2_Activated");
}
private void Form2_Load(object sender, EventArgs e)
{
Console.WriteLine("Form2_Load");
}
private void Form2_Deactivate(object sender, EventArgs e)
{
Console.WriteLine("Form2_Deactivate");
}
}
}