PDA

View Full Version : گذاشتن تصویر زمینه برای فرم والد



mahtab_18
دوشنبه 05 شهریور 1386, 12:59 عصر
سلام

من یه فرم دارم که اونو به عنوان فرم والد تعریف کردم . حالا وقتی می خوام برای این فرم تصویر زمینه قرار بدم ، تصویر را به عنوان زمینه نشان نمی دهد . کسی می دونه چجوری می تونم این مشکل را برطرف کنم ؟

hdv212
دوشنبه 05 شهریور 1386, 13:12 عصر
قاعدتا باید این کار صورت بگیره :
شما باید خاصیت BackgroundImage فرمتون رو با به عکس، ست کرده باشید، اینطوری :

this.BackgroundImage = Image.FromFile("jAppServer2004-20051122-00024.jpg");
اگه کاری غیر از این کردید، لطفا کدتون رو اینجا بذارید.

sm_ezadpanah
دوشنبه 05 شهریور 1386, 13:51 عصر
با سلام
منظورتون از فرم والد چیه ؟

mahtab_18
دوشنبه 05 شهریور 1386, 18:40 عصر
فرم والد یعنی خاصیت IsMdiContainer فرم را برابر true قرار بدیم .
من وقتی این کار را می کنم تصویر زمینه محو میشه . در ضمن تصویر را هم درست برای زمینه تست کردم. و می دونم مشکلی در تست تصویر نیست . چون تمام فرم های فرزند تصویر زمینه را نشان می دهند.

once4ever
دوشنبه 05 شهریور 1386, 19:41 عصر
فرم والد یعنی خاصیت IsMdiContainer فرم را برابر true قرار بدیم .
من وقتی این کار را می کنم تصویر زمینه محو میشه . در ضمن تصویر را هم درست برای زمینه تست کردم. و می دونم مشکلی در تست تصویر نیست . چون تمام فرم های فرزند تصویر زمینه را نشان می دهند.
خاصیت RightToLeftLayout چی انتخاب کردید؟

mahtab_18
دوشنبه 05 شهریور 1386, 20:36 عصر
خاصیت RightToLeftLayout را برابر false قرار دادم .
__________________________________________________ ____________________
این موضوع مشکلات زیادی در انجام پروژه ام بوجود آورده . اگر کسی می دونه باید چه کار کنم بگه ؟

hdv212
دوشنبه 05 شهریور 1386, 21:04 عصر
من این مشکل شما رو تست کردم و زمانی که خاصیت IsMdiContainer را برابر با true قرار دادم، عکس پشت زمینه ی فرمم ناپدید شد، ولی زمانی که کامپایل و اجرا کنید، عکس پشت زمینه در فرم قرار داره و نشون داده میشه، شما برنامه تون رو کامپایل و اجرا هم کردید و آیا در زمان اجرا هم عکس پشت زمینه رو نشون نمیده ؟ (واسه ی من نشون میده)

mahtab_18
دوشنبه 05 شهریور 1386, 23:08 عصر
خیلی ممنون . این به فکرم نرسیده بود . منم وقتی برنامه را اجرا کردم . تصویر نشان داده شد . فکر نمی کردم به این سادگی باشه:تشویق:

aliramazani
شنبه 12 اردیبهشت 1394, 15:12 عصر
چطوری از شر اون رنگ خاکستری فرم والد راحت بشیم؟

Louai_M
دوشنبه 21 اردیبهشت 1394, 23:33 عصر
سلام

من هم این مشکلو دارم الان کد زیر رو برای فراخوانی تصویر انجام دادم درست هم عمل می کنه ولی باخارج شدن از برنامه تصویر پاک می شه


private void تغییرتصویرزمینهToolStripMenuItem_Cl ick(object sender, EventArgs e)
{
OpenFileDialog OFD = new OpenFileDialog();
OFD.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolde r.Personal);
OFD.Filter = "Picture As jpg|*.jpg|Picture As jpeg|*.jpeg*|Picture As bmp|*.bmp|Picture As gif|*.gif|Picture As wmf|*.wmf|Picture As png|*.png";

if (OFD.ShowDialog(this) == DialogResult.OK)
{
this.BackgroundImage = new Bitmap(OFD.FileName);
this.BackgroundImageLayout = ImageLayout.Stretch;
}
}

ghasem110deh
سه شنبه 22 اردیبهشت 1394, 00:11 صبح
سلام به همه ...
تو پنجره perperties خود فرم والد میشه یه عکس واسه پس زمینه انتخاب کرد که البته فقط موقع اجرا نمایش داده میشه !
.
.
.
و واسه تغییر رنگ هم از این متد (ساده ترین روشه) استفاده کنید :

void Rang_Amizi() {
foreach (Control control in this.Controls)
{
MdiClient client = control as MdiClient;
if (!(client == null))
{
client.BackColor = Color.Blue;
break;
}
}
}

بعد هم تو لود_فرم فراخوانیش کنید ...

ولی بقول دو دوست (حرفه ای) ایرانی و یه برنامه نویس اینکاره تو سایت (stackoverflow) :
بشدت توصیه میکنم تو برنامه هاتون از فرم والد استفاده نکنید !
و خودم هم دیگه تو پروژه ای از این خاصیت استفاده نمیکنم ... مگر بخوام فتوشاپ ایرانی بسازم :)
.
.
.

aliramazani
چهارشنبه 23 اردیبهشت 1394, 12:52 عصر
بشدت توصیه میکنم تو برنامه هاتون از فرم والد استفاده نکنید !

چرا؟ لطفا توضیح بدین

ghasem110deh
چهارشنبه 23 اردیبهشت 1394, 15:05 عصر
چرا؟ لطفا توضیح بدین

چند تا دلیل که اون دوستان بمن گفتن :
1- اول اینکه تو برنامه های آرشو و بایگانی اطلاعات و این قبیل برنامه ها ، از این حالت برای طراحی (دیگه) استفاده نمیشه ، و معمولا برای برنامه هایی که ساختار طراحی دارن از این خاصیت استفاده میشه !
چه گرافیکی مثل فتوشاپ و چه طراحی برنامه های محاسباتی ... (البته ، شاید بعضیا رو حساب سلیقه اینکار رو بکنن)
2- هر کاری که بکنید با باز شدن فرم فرزند (در سیستم های نسبتا ضعیف و متوسط) بعضی اوقات حالت افت فرم رو خواهید داشت !
خصوصا اگه یه تصویر با کیفیت بندازین تو پس زمینه این حالت قابل مشاهده هستش (با باز کردن چند تا فرم فرزند رو سیستم های قویتر هم این مشکل دیده شده)
3- طراحی داره به سمت تجمیع دریافت ورودی و حتی خروجی میره : ***
یعنی دیگه واسه وارد کردن مثلا ، ثبت مشخصات کاربر یه فرم ایجاد نمیکنن ... واسه نمایش یه فرم دیگه و تا آخر ؛ بلکه باید سعی کرد حتی الامکان کاربر بتونه ورودی های مرتبط رو توی یه فرم وارد کنه ! و حتی همنجا نتیجه رو ببینه .
با این وجود اندازه فرم تقریبا بزرگ میشه (در اینصورت قسمتی از فرم های فرزند میره زیر یه فرم دیگه - که این امر اصل کار رو میبره زیر سوال - تصاویر ضمیمه)
4- دست طراح رابط کاربری (تو پروژه های تیمی) باز میشه ... تا طراحی فرم و ظاهر برنامه رو جذاب تر پیاده کنه !
.
.
.
این دقیقا دلایلی بود که شنیدم و صرفا دارم نقل قول میکنن !
من قانع شدم :) ... اما یه چیز قطعی و حتمی نیست !

http://lh5.ggpht.com/-ozjuN_E0Z88/TvuQCP7dngI/AAAAAAAAXbQ/6uXN35qs1dI/image_thumb%25255B1%25255D.png?imgmax=800

http://www.codeproject.com/KB/webservices/web-service-communicator/winform-data-output.gif

https://www.componentone.com/newimages/Products/ScreenShots/OLAPWinForms/OLAP_MultiValue.png

aliramazani
پنج شنبه 24 اردیبهشت 1394, 11:23 صبح
اگر یک فرم فرزند maximize بشه دیگه هر فرم فرزند دیگه ای که باز میکنیم به صورت ماکسیمایز در میاد چکار کنیم که اینطور نشه؟

RmeXXXXXXXXX
پنج شنبه 24 اردیبهشت 1394, 22:46 عصر
یک PictureBox یا Panel بذار رو فرم خاصیت Dock را با Fill مقدار بده. حالا این کنترل رو هر کار میخوایی بکن. رنگ پس زمینه رو عوض کن. تصویر بذار براش اگه پنل گذاشتی راحت میتونی دکمه، لیبل و ... رو هم به فرم اضافه کنی. (روش استانداردش همینه)
و برای اینکه وقتی در زمان اجرا تصویر زمینه رو عوض میکنی می خوایی بار بعد که باز هم برنامه رو اجرا کردی همین تصویر رو لود کنه!!!!!!! باید بعد از هر تغییر عکس آدرس تصویر رو یه جا ذخیره کنی یا اینکه تصویر رو یه جای مخصوص کپی کنی!

ebrahim.rayatparvar
جمعه 25 اردیبهشت 1394, 13:57 عصر
چرا از این روش استفاده میکنید من خودم به شخصه برای اینکه در برنامه چندین فرم مثلا فاکتور و حواله و ... رو همزمان باز داشته باشم و بتونم به همه دست رسی داشته باشم از tab استفاده میکنم الان هم بیشتر نرم افزار ها رو من دیدم که دارن از این روش استفاده میکنند.

aliramazani
یک شنبه 27 اردیبهشت 1394, 08:24 صبح
یک PictureBox یا Panel بذار رو فرم خاصیت Dock را با Fill مقدار بده. حالا این کنترل رو هر کار میخوایی بکن. رنگ پس زمینه رو عوض کن. تصویر بذار براش اگه پنل گذاشتی راحت میتونی دکمه، لیبل و ... رو هم به فرم اضافه کنی. (روش استانداردش همینه)
و برای اینکه وقتی در زمان اجرا تصویر زمینه رو عوض میکنی می خوایی بار بعد که باز هم برنامه رو اجرا کردی همین تصویر رو لود کنه!!!!!!! باید بعد از هر تغییر عکس آدرس تصویر رو یه جا ذخیره کنی یا اینکه تصویر رو یه جای مخصوص کپی کنی!
لازم به ذکره با این روش هر پنجره ای باز میکنیم پشت پانل میاد و پاتل همیشه در الویته و هیچ پنجره دیگه ای مشاهده نمیشه. این روش همچینام استاندار نیست.

aliramazani
یک شنبه 27 اردیبهشت 1394, 08:26 صبح
چرا از این روش استفاده میکنید من خودم به شخصه برای اینکه در برنامه چندین فرم مثلا فاکتور و حواله و ... رو همزمان باز داشته باشم و بتونم به همه دست رسی داشته باشم از tab استفاده میکنم الان هم بیشتر نرم افزار ها رو من دیدم که دارن از این روش استفاده میکنند.

زمانی که کدهای زیادی تو صفحه دارین این روش مناسب نیست. چونکه هر تب واسه خودش کلی دستور داره و همه توی فرم بابد نوشته بشه و فرم شلوغ و سنگین میشه.

aliramazani
یک شنبه 27 اردیبهشت 1394, 08:28 صبح
دوستان لطفا به سوال پرسیده شده جواب بدین و خواهشا پیشنهاد ندین. این روشه را من بلدم وقبلا امتحان کردم. الان توی این سوال با مشکل روبرو هستم.