PDA

View Full Version : درخواست نحوه سوئیچ کردن بین فرم ها در C#



mahdi-1
چهارشنبه 23 اسفند 1391, 12:40 عصر
سلام به همگی
من یه برنامه نوشتم که میخوام در رویداد load فرم اول یه شرطی رو برسی کنه و اگه درست بود فرم جاری رو ببنده و فرم دیگری رو باز کنه ولی این ارور رو میده:
101380

pishvaei
چهارشنبه 23 اسفند 1391, 12:45 عصر
باید قبلش مثلا بنویسی :
liveForm lv1 = new liveForm(); // construct
بعد هم باید اینگونه بنویسی :
lv1.Visible = false; // set

daneshjo90
چهارشنبه 23 اسفند 1391, 13:12 عصر
با سلام
خب دوست عزیز از این قطعه کد استفاده کن ببین به دردت میخوره ؟

if (dataGridViewX1.RowCount == 1)
{
this.Close();
Form1 x = new Form1();
x.ShowDialog();
}

موفق باشی

mahdi-1
چهارشنبه 23 اسفند 1391, 13:12 عصر
منظور از این خط چیه .
برای فرم جاریه یا فرم دیگر

daneshjo90
چهارشنبه 23 اسفند 1391, 13:20 عصر
ببینید

خط سوم فرم جاری رو میبنده

خط چهارم یه موجودیت از فرم دیگه که میخوای اجرا بشه رو میسازه و در X قرار میده

خط پنجم هم اون فرم مورد نظر شما رو به نمایش میزاره

خیلی آسونه

موفق باشی

pishvaei
چهارشنبه 23 اسفند 1391, 13:22 عصر
if (dataGridViewX1.RowCount == 1)
{
this.Close(); // بستن فرم جاری
Form1 x = new Form1(); // ساخت فرم دوم
x.ShowDialog(); // نمایش فرم دوم
}

mahdi-1
چهارشنبه 23 اسفند 1391, 13:33 عصر
بازم جواب نمیده.
وقتی فرم جاری رو Close میکنم فرم های دیگه هم بسته میشه یعنی فرم جاری رو فرم مادر درنظر میگیره.

daneshjo90
چهارشنبه 23 اسفند 1391, 13:39 عصر
خوب دوست عزیز اونوقت به جای

this.close();

بزن

this.hide();
یا اینکه اونو از حالت فرم مادر بودن دربیار

موفق باشی

mahdi-1
چهارشنبه 23 اسفند 1391, 13:41 عصر
خیلی ممنون مشکلم حل شد
فقط کد شما یک ایرادی داره که تو خط سومه
ایرادشم اینه که وقتی من فرم جاری رو Close میکنم در اصل برنامه اون رو فرم مادر درنظر میگیره و کل برنامه رو میبنده ولی من اینجوری نوشتم جواب داد.
if (dataGridView1.RowCount > 1)
{
this.Visible = false;
this.Hide();
Form2 x = new Form2();

x.ShowDialog();

}

فقط یک سوال دیگه . تو کدوم رویداد فرم دوم که تازه باز شده باید دستوری رو بنویسم که کل برنامه رو ببنده؟ (فکر کنم دستورش Application.exit() باشه)

mahdi-1
چهارشنبه 23 اسفند 1391, 13:46 عصر
خیلی ممنون
فقط چند تا سوال دیگه داشتم.
تو کدوم رویداد فرم دوم که تازه باز شده باید دستوری رو بنویسم که کل برنامه رو ببنده؟ (فکر کنم دستورش Application.exit() باشه) چون برنامه بسته نمیشه فقط فرم بسته میشه.
و این که چه طور میتونم کاری کنم که فرم در وسط صفحه ظاهر بشه(منظورم اینه که کدوم مشخصه اش رو باید تغییر بدم؟

daneshjo90
چهارشنبه 23 اسفند 1391, 13:53 عصر
آره درسته

فقط دوست عزیز اگه بخوای یه فرم دگ رو به عنوان فرم اصلی(مادر) در نظر بگیری باید از قسمت Sulotion Explorer فایل Program.cs رو باز کن و کد زیر رو تغییر بده


using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Sabte_Site
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}
}
}


میتونی نام فرم مورد نظرتو به جای Form1 وارد کنی

موفق باشی

daneshjo90
چهارشنبه 23 اسفند 1391, 13:55 عصر
1- آره باید بنویسی Applicatio.exit();
2- تو قسمت پروپرتیز فرم مورد نظرت گزینه StartPostion رو به حالت CenterScreen تغییر بده

موفق باشی

daneshjo90
چهارشنبه 23 اسفند 1391, 13:56 عصر
یادم رفت بنویسم که یه دکمه ایجاد کن به نام بستن فرم و داخل کلیک اون بنویس Applicatio.exit();

برنامه ات به کلی بسته میشه

موفق باشی