PDA

View Full Version : سوال: اجرای آهسته فرم و بسته شدن آهسته فرم



raha1234567
دوشنبه 25 مرداد 1389, 22:05 عصر
سلام دوستان
من این برنامه را نوشتم که فرم آهسته آهسته ظاهر شود و بعد از اینکه کاملا ظاهر شد با زدن دکمه close آهسته آهسته بسته شود . قسمت اول اجرا می کند ولی قسمت دوم اجرا نمی کند . من قسمت دوم این برنامه (بسته شدن فرم ) را در دو رویداد closing , closed هم نوشتم اما اجرا نداد لطفا کمکم کنید.
:متعجب::گریه::متفکر:



private void Form1_Load(object sender, EventArgs e)
{
if (this.Opacity > 0)
{
this.Opacity += 0.3;
}
if (this.Opacity == 100)
{
for (int i = 1; i <= 100; i++)
this.Opacity -= 0.2;
}
this.Close();
}

amirh_karimifar
دوشنبه 25 مرداد 1389, 22:08 عصر
دلیلش اینه که وقتی از صفر 0.3 0.3 به opacity اضافه میکنی به 100 نمیرسه . چون 100 به 0.3 تقسیم پذیر نیست .
دوم اینکه باید قسمت دوم رو حتما در closing بنویسی .
این دو تا رو درست کن جواب میده .

صباح فتحی
دوشنبه 25 مرداد 1389, 22:11 عصر
اینم کد بسته شدن:


this.Opacity = 1;
for (int i = 100; i > 1; i--)
{
this.Opacity -= 0.01;
Application.DoEvents();
}

موفق باشید

raha1234567
دوشنبه 25 مرداد 1389, 22:40 عصر
دلیلش اینه که وقتی از صفر 0.3 0.3 به opacity اضافه میکنی به 100 نمیرسه . چون 100 به 0.3 تقسیم پذیر نیست .
دوم اینکه باید قسمت دوم رو حتما در closing بنویسی .
این دو تا رو درست کن جواب میده .

از جوابتون ممنونم
ولی من این را در رویداد closing نوشتم و همچنین مقدار opacity را هم تغییر دادم ولی اجرا نکرد و همچنین راه دوست خوبم صبا را هم رفتم ولی بازم اجرا ندا
کمک کنید:افسرده:

صباح فتحی
دوشنبه 25 مرداد 1389, 22:46 عصر
دوست خوبم من این کدرو توی همین سایت دیدم...من که اجراکردم...

raha1234567
دوشنبه 25 مرداد 1389, 22:53 عصر
دوست خوبم من این کدرو توی همین سایت دیدم...من که اجراکردم...
نه عزیزم از منم اجرا میکنه ولی تکی تکی هر دوش باهم در یک فرم اجرا نمی کنه.

صباح فتحی
دوشنبه 25 مرداد 1389, 23:04 عصر
اهان..حیف که ویندوزم 7 هست نمیشه روش کارکرد...شرمنده:خجالت:

raha1234567
سه شنبه 26 مرداد 1389, 00:53 صبح
دوستان من به کمکتون نیاز دارم کسی جواب رو بلد نیست؟؟؟؟؟؟؟؟؟؟؟؟

vandermond
سه شنبه 26 مرداد 1389, 02:34 صبح
نه عزیزم از منم اجرا میکنه ولی تکی تکی هر دوش باهم در یک فرم اجرا نمی کنه.
:متعجب:
دوست عزيز چه ربطي داره... من الان VS ندارم هنوز ولي اگه ميگي تكي تكي اجرا ميشه اين كار رو بكن:
(خط آخري رو اضافه كن:)

if (this.Opacity > 0)
{
this.Opacity += 0.3;
}
this.Opacity=1;
اگه VS ام بود برات برنامه شو ميزاشتم. فعلا كه نيست...:گریه:

BILLY_Mgs
سه شنبه 26 مرداد 1389, 06:59 صبح
از یه تایمر استفاده کن .
یه تایمر بزار به اسم (timerCloser) و در اونت تیک تایمر اینو بنویس :


if (this.Opacity != 0)
{
this.Opacity = this.Opacity - 0.1;
}
else
{
ClosePlz = true;
timerCloser.Enabled = false;
this.Close();
}




و در اونت FormClosing اینو بنویس :


if (ClosePlz != true)
{
e.Cancel = true;
timerCloser.Enabled = true;
}
else
{
timerCloser.Enabled = false;
}



راستی اینم بالای کلاس اضافه کن :


private bool ClosePlz = false;



من این کد هارو از تو برنامم نوشتم اگه جاییش زیاد بود یا ناقص بگو....

ایمان مدائنی
سه شنبه 26 مرداد 1389, 07:36 صبح
يك نمونه برنامه دارم برات ميذارم ببين !
حتما كارت راه ميوفته !

feree123
جمعه 29 مرداد 1389, 03:43 صبح
سلام



public partial class Form1 : Form
{
int State = 1;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (State == 1)
{
if (Opacity < 1) Opacity += 0.01;
else
{
State = 0;
timer1.Enabled = false;
}
}
else if (State == -1){
if (Opacity > 0) Opacity -= 0.01;
else
{
State =2;
this.Close();
}
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
timer1.Enabled = true;
if (State != 2)
{
State = -1;
e.Cancel = true;
}
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (State == 1) Opacity = 1;
else if (State == -1) Opacity = 0;
}
}

pystar
جمعه 29 مرداد 1389, 09:59 صبح
سلام
شما میتونید این کارو هم انجام بدید. خیلی ساده هستش اما من همیشه از این کد استفاده میکنم. اول اینکه مقدار opacity فرم رو صفر قرار بده. بعد دو تا کنترل تامیر رو فرم قرار بده و تایمر اول فعال و تایمر دوم غیر فعال باشه.
در رویداد تایمر اول این کد رو بنویس:

this.opacity+=0.05; //0.05 added to opacity
if(this.opacity==100) timer1.enabled=false; //enabled=false

خوب تا اینجا برای ظاهر شدن بود.
حالا در رویداد کلوزینگ فرم این کد رو بنویس:

timer2.enabled=true; //enabled=true

و اینم کد مربوط به تایمر دوم برای مخفی شدن فرم و خروج:

this.opacity-=0.05; //0.05 - from opacity
if(this.opacity==0) // where
}
timer2.enabled=false; //enabled=false
application.exit(); // exit
{

کدهاش خیلی ساده بود اما اگه توجه کنی خیلی واضح بودن.میتونی مقدارها رو تغییر بدی به دلخواه خودت.
امیدوارم بدرت بخوره

mmd2009
شنبه 30 مرداد 1389, 04:20 صبح
با سلام

به لینک زیر برید

http://www.barnamenevis.org/forum/sh...&postcount=546 (http://www.barnamenevis.org/forum/showpost.php?p=1071700&postcount=546)

دیگه نمیدونم بقیه گذاشت یا نه ولی منم گذاشتم...

sheytoon.bala89
شنبه 30 مرداد 1389, 06:03 صبح
سلام



public partial class Form1 : Form
{
int State = 1;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (State == 1)
{
if (Opacity < 1) Opacity += 0.01;
else
{
State = 0;
timer1.Enabled = false;
}
}
else if (State == -1){
if (Opacity > 0) Opacity -= 0.01;
else
{
State =2;
this.Close();
}
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
timer1.Enabled = true;
if (State != 2)
{
State = -1;
e.Cancel = true;
}
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (State == 1) Opacity = 1;
else if (State == -1) Opacity = 0;
}
}



سلام
به نظرم اين راه حل حرف نداره و خيلي هم كامله.

raha1234567
شنبه 30 مرداد 1389, 09:19 صبح
با تشکر از تمامی دوستان جواب رو پیدا کردم:لبخندساده: