تور لحظه آخری
امروز : یکشنبه ، 15 مهر 1403    احادیث و روایات:  پیامبر اکرم (ص):کمترین کفر این است که انسان از برادرش سخنی بشنود و آن را نگه دارد تا او را با آ...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها




آمار وبسایت

 تعداد کل بازدیدها : 1821107661




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

show و Showdialog در c++.net -


واضح آرشیو وب فارسی:سایت ریسک: show و Showdialog در c++.net sara_she 25 ارديبهشت 1386, 08:28با سلام مي خواستم بدونم براي نمايش فرم چه تفاوتي بين show و showdialog‌ تو vs c++.net وجود داره . اگه يه نمونه كد بذارين كه نحوه استفاده از هر كدوم رو نشون بده ممنون مي شم. saalek110 25 ارديبهشت 1386, 16:27منبع: ----------------------------------------------------- Show is modeless, ShowDialog is modal. من آمدم در سی شارپ(در سی پلاس دات نت هم باید چنین باشد.) یک فرم به پروژه افزودم. وقتی با دستور ((Show)) فرم 2 صدا زده میشد من قادر بودم که با فرم 1 کار کنم ولی وقتی با ((ShowDialog)) فرم 2 را فراخواندم قبل بستن فرم 2 نمی توانستم با فرم یک کار کنم. private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.Show(); // or frm.ShowDialog(); } نکته دیگری که در این صفحه اشاره شده این است که ما در حالت ShowDialog وقتی فرم 2 را مینیمایز می کنیم فرم 1 هم مینیمایز میشه. من خودم یک نتیجه گیری شخصی می کنم و آن اینه که ShowDialog یک فرم موقتی برای ارتباط فرم 1 با کاربر است ولی در مورد Show فرم 2 مستقل است و شعبه یا پنجره موقت فرم 1 به حساب نمی آید. sara_she 26 ارديبهشت 1386, 10:35ممنون از راهنماييتون . فكر كنم SHOWDIALOG‌ مثل MESSAGEBOX عمل مي كنه و حتما بايد بسته بشه و يا دكمه اي از آن كليك بشه تابقيه خطوط كد قابل اجرا بشن در واقع وقتي برنامه به خط sHOWDIALOG برسه اجراش تا زمان پاسخ به اين فرم متوقف مي شه saalek110 26 ارديبهشت 1386, 21:30منبع: ------------------------------------------- چگونه می توان دو فرم را در دلفی داشت و از یکی دیگری را صدا زد دستور زیر برای نمایش دادن یک فرم در دلفی در نظر گرفته شده است : Form1.Show Form1.ShowModal تفاوتی که دو دستور بالا دارند این است که در ادیتور اول یک فرم نمایش داده می شود و کاربر می تواند بدون اینکه بر روی فرم کاری انجام دهد، فرم دیگری از برنامه که باز است را انتخاب کرده و کار دیگری انجام دهد. اما با استفاده از دستور دوم، برنامه نویس کاربر را ملزم به کار با فرم نمایش داده شده م یکند و کاربر باید جتما بر روی یکی از دکمه های موجود بر روی فرم کلیک کند. بدون دادن اطلاعات به این فرم، امکان کار کردن با فرمهای دیگر برنامه نیست. معمولا این روش زمانی به کار می رود که بخواهیم اطلاعات مهمی را از کاربر بگیریم و بدون دادن آن اطلاعات ادامه کار برنامه ، امکانپذیر نباشد باید در نظر داشته باشید که برای صدا زدن فرم جاری از یک فرم دیگر باید در متن برنامه آن فرم همین دستور را با نام صحیح فرم بکار ببریم. کامپایلر دلفی بصورت اتوماتیک، کدهای مربوط به صدازدن واحدها در یکدیگر را در برنامه قرار می دهد. البته در دلفی گفته ولی فرق نمی کنه. بنا به گفته این سایت مواقعی از نوع دیالوگی استفاده می کنیم که به فرمایش شما مثل یک مسیج باکس قرار است از کاربر در موردی اطلاعاتی گرفته شود تا برنامه تصمیم گیری کند چه مسیری را انتخاب کند. ولی به نظر من در مواقع دیگر هم کاربرد دارد. مثلا وقتی کاربر با زدن دکمه ای پنجره help را باز می کند اگر تعداد این گونه پنجره ها زیاد شود توجه کاربر از فرم اصلی منحرف می شود و شاید میان فرمهای متعدد سردرگم شود . پس اجبار در بستن اینجا مفید است. sara_she 29 ارديبهشت 1386, 11:51ممنون از همكاري و توجه تون اگه مي شه بگين activate چه فرقي با showdialog داره چون من كه امتحان كردم فرق خاصي نديدم منظورم اينكه كه اگه بتويسيم form1->activate چه اتفاقي بايد رخ بده؟ saalek110 29 ارديبهشت 1386, 18:27منبع: ---------------------------------------------------------- saalek110 29 ارديبهشت 1386, 18:49با سلام. من در سی شارپ 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"); } } } saalek110 29 ارديبهشت 1386, 18:58منبع: --------------------------------------- C# // Specify /d:DEBUG when compiling. using System; using System.Data; using System.Diagnostics; class Test { static void Main() { Debug.Listeners.Add(new TextWriterTraceListener(Console.Out)); Debug.AutoFlush = true; Debug.Indent(); Debug.WriteLine("Entering Main"); Console.WriteLine("Hello World."); Debug.WriteLine("Exiting Main"); Debug.Unindent(); } } C++ // Specify /DDEBUG when compiling. #using <System.dll> using namespace System; using namespace System::Diagnostics; int main( void ) { #if defined(DEBUG) Debug::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) ); Debug::AutoFlush = true; Debug::Indent(); Debug::WriteLine( "Entering Main" ); #endif Console::WriteLine( "Hello World." ); #if defined(DEBUG) Debug::WriteLine( "Exiting Main" ); Debug::Unindent(); #endif return 0; } sara_she 30 ارديبهشت 1386, 08:02از راهنمايي دقيق و كاملتون بينهايت ممنون




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 5282]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن