PDA

View Full Version : سوال: قرارگیری child form در وسط فر م پدر



mohsenaminzare
دوشنبه 02 اسفند 1389, 22:28 عصر
سلام
یک فرم mdi دارم که دارای چند فرم child هست با عبارت زیر می خواهم که فرم child در وسط فرم owner قرار بگیره که نمی شه :


users usr1 = new users();
usr1.MdiParent = this;
usr1.startposition = centerowner;
usr1.Show();

و همچنین می خوام از هر فرم child فقط یک نمونه اجرا شه ؟

با تشکر

AmirHarirbafan
سه شنبه 03 اسفند 1389, 00:50 صبح
این خط باید اینجوری باشه :


usr1.startposition = FormStartPosition.CenterScreen;


برای اینکه یک فرم فقط یک بار اجرا بشه راه های زیادی وجود داره، اما استانداردتر از همه استفاده از Design Pattern ی به نام SingleTon :
در فرم هایی که میخواهید فقط یک بار اجرا شوند باید این کدها رو بنویسید :


static private AllMessageManage _instance = null;
static internal AllMessageManage GetInstace()
{
if (_instance == null || _instance.IsDisposed)
{
_instance = new AllMessageManage();
}
return _instance;
}

همچنین Constructor فرم رو Private کنید.
برای نمایش فرم ها نیز از این دستور استفاده کنید :


FormName.GetInstace().Show()

mohsenaminzare
سه شنبه 03 اسفند 1389, 18:52 عصر
برای اینکه یک فرم فقط یک بار اجرا بشه راه های زیادی وجود داره، اما استانداردتر از همه استفاده از Design Pattern ی به نام SingleTon :
در فرم هایی که میخواهید فقط یک بار اجرا شوند باید این کدها رو بنویسید :


static private AllMessageManage _instance = null;
static internal AllMessageManage GetInstace()
{
if (_instance == null || _instance.IsDisposed)
{
_instance = new AllMessageManage();
}
return _instance;
}

همچنین Constructor فرم رو Private کنید.
برای نمایش فرم ها نیز از این دستور استفاده کنید :


FormName.GetInstace().Show()
با تشکر از شما ، میشه راجع به ای کد بیشتر توضیح بدین و این که دقیقا کجا باید این کد رو بنویسم ؟

AmirHarirbafan
چهارشنبه 04 اسفند 1389, 00:39 صبح
با تشکر از شما ، میشه راجع به ای کد بیشتر توضیح بدین و این که دقیقا کجا باید این کد رو بنویسم ؟
این یک Design Pattern هست که برای این منظور استفاده میشه که، اطمینان حاصل شود که تنها یک Instance از کلاس موردنظر ایجاد میشود. برای همین منظور از یک تابع یا Property استاتیک در کلاس استفاده میشه. به همراه یک متغییر که یک اشاره گر به نمونه ی ایجاد شده داشته باشیم.
هنگامی که برای اولین بار از تابع GetInstace استفاده میکنیم، فیلد _instance مقدار Null دارد، به همین دلیل، یک شی از کلاس ایجاد میشود و در فیلد مذکور نیز ذخیره میشود. سپس شی ایجاد شده باز گردانده میشود.
هنگامی که برای دومین بار، متد GetInstace اجرا میشود، چون از قبل فیلد _instance اشاره گر به شی را در خود دارد، دیگر شی جدیدی ایجاد نمیشود و همان شی قبلی باز گردانده میشود.
درصورتی که شما فرم را ببندید یا اشاره گر به شی (_instance) برابر Null شود، این به معنی بسته شدن فرم درنظر گرفته میشود، پس مجدداً شی ایجاد خواهد شد