PDA

View Full Version : سوال: ارسال یک عکس از فرم به فرم دیگر



saeedrashidi
دوشنبه 29 تیر 1394, 23:42 عصر
با سلام من معادل این خط کد رو تو سی شارپ می خواستم

vb.net form1.picturbox1.image=picturbox1.image

چگونه میتوانم به اشیای یک فرم در فرم دیگر دست یافت.مثلا در فرم2 چگونه میتوان به یک picturbox در فرم1 دست یافت .با تشکر

ژیار رحیمی
سه شنبه 30 تیر 1394, 01:09 صبح
سلام وقت عالی بخیر.شیء که میخواهی از فرم دیگر دسترسی بهش داشته باشی ابتدا انتخاب کرده و در پنجره properties یه خاصیت به اسم modifiers داره اونو رو public قرار بده .در فرم دیگر بعد از نمونه سازی از کلاس فرمی که شیء درون قرار داره با زدن نام نمونه کلاس فرم + نقطه + نام شیء قابل دسترسی میباشد


form1 frm=new form1();
frm.picturebox1.image=picturebox1.image

hadimtn
سه شنبه 30 تیر 1394, 01:27 صبح
سلام.
با عرض معذرت از جناب zagroti !
دقیقا همونطور که ایشون فرمودند مشخصه‌ی Modifiers مربوط Picturebox مد نظر رو Public کنید تا از فرم‌های دیگر هم قابل دسترسی باشه!
سپس:
Form1 f1 = Application.OpenForms["Form1"] as Form1;
f1.pictureBox1.Visible = true;

در این مثال مشخصه‌ی Visible مربوط به picturebox1 که تو فرم 1 قرار داره از طریق فرم 2 (دلخواه) true شده.

بیتا حکمت
چهارشنبه 31 تیر 1394, 14:08 عصر
با احترام به دوستانی که راه حل ارائه دادن ، میخواستم بگم تو آرشیو قدیمی سایت برنامه نویس مطلبی خوندم دسترسی به یک کنترل از فرم دیگر با اصول شی گرایی سازگاری نداره .

Mahmoud Zaad
چهارشنبه 31 تیر 1394, 14:30 عصر
سلام

با احترام به دوستانی که راه حل ارائه دادن ، میخواستم بگم تو آرشیو قدیمی سایت برنامه نویس مطلبی خوندم دسترسی به یک کنترل از فرم دیگر با اصول شی گرایی سازگاری نداره .
صحیح است!

روش اصولی:133463

hadimtn
پنج شنبه 01 مرداد 1394, 02:02 صبح
با احترام به دوستانی که راه حل ارائه دادن ، میخواستم بگم تو آرشیو قدیمی سایت برنامه نویس مطلبی خوندم دسترسی به یک کنترل از فرم دیگر با اصول شی گرایی سازگاری نداره .
بنده خودم مبتدی هستم، قصدم فقط این بود که کار ایشون راه بیافته!
لطف کنید آدرس تاپیک رو بدید تا اطلاعات بیشتری بدست بیاریم.

hadimtn
پنج شنبه 01 مرداد 1394, 02:07 صبح
سلام

صحیح است!

روش اصولی:133463

میشه این قسمت رو توضیح بدین:

private Image _img;
public Image Img
{
get { return _img; }
set { _img = value; }
}

alireza264
پنج شنبه 01 مرداد 1394, 09:03 صبح
با احترام به دوستانی که راه حل ارائه دادن ، میخواستم بگم تو آرشیو قدیمی سایت برنامه نویس مطلبی خوندم دسترسی به یک کنترل از فرم دیگر با اصول شی گرایی سازگاری نداره .

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



using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1(Image myImage)
{
Picturebox1.Image = myImage;
InitializeComponent();
}


و اینجوری فراخوانیش کرد



Form1 frm1= New Form1(Picturebox2.image);
frm1.show();

Mahmoud Zaad
پنج شنبه 01 مرداد 1394, 09:13 صبح
میشه این قسمت رو توضیح بدین:

private Image _img;
public Image Img
{
get { return _img; }
set { _img = value; }
}
ما اومدیم در فرم دوم یه property تعریف کردیم که هم می تونیم برای خوندن (get = گرفتن/دریافت کردن) هم برای نوشتن (set = تنظیم کردن) ازش استفاده کنیم.

اما در کل: بعد از تعریف پراپرتی، در فرم دوم یک نمونه از فرم ساختیم و تصویر موجود در فرم اول رو برای property مورد نظر در فرم دوم تنظیم کردیم (set).
در این مثال از قسمت get پراپرتی Img استفاده نکردیم چون فقط کار تنظیم کردن تصویر در فرم دوم رو داشتیم و لذا می تونیم این قسمت رو کامنت کنیم. اما کاربرد get به این صورت میشه: شما می تونید در فرم دوم به نحوی تصویر رو تغییر بدید بعد با استفاده از get مجدداً اونو به فرم اول بفرستید.
فایل جدید : 133476
پراپرتی ها رو برای ارسال و دریافت رشته ها، اعداد، Byte[] و سایر نوع داده ها بین فرم ها و کلاس ها می تونید استفاده کنید.

saeedrashidi
جمعه 02 مرداد 1394, 09:25 صبح
باسلام خدمت دوستان لطفا اگه کسی میتونه کمک کنه. من در فرم 2 میخواهم با زدن روی یک عکس اون عکس رو تو فرم 1 نمایش بده حالا این کار رو انجام میدم اما تغیرات با نمایش فرم 1 اعمال میشه.

form1 frm1 =new form1
frm1.picturbox1.image=picturbox1.image

ناامید
جمعه 02 مرداد 1394, 14:21 عصر
سلام.
دو فرم در پروژه ایجاد کنید به نام Form1 و Form2.

یک pictureBox در Form1 و یک pictureBox در Form2 قرار بدید.
یک عکس هم در pictureBox باکس Form2 اضافه کنید تا انتقال داده بشه به Form1.


سازنده Form2 رو به این صورت تعریف کنید:

Form1 form1;
public Form2(Form1 form)
{
InitializeComponent();
form1 = form;
}

یک button هم به Form1 اضافه کنید تا Form2 رو فراخوانی کنید.
رو button دو بار کلیک کنید تا رویداد کلیک ایجاد بشه و به اینصورت تغییرش بدید.

private void button1_Click(object sender, EventArgs e)
{
Form2 obj = new Form2(this);
obj.ShowDialog();
}

و در نهایت رویداد کلیک pictureBox را در Form2 ایجاد کنید و به اینصورت تغییر بدید:

private void pictureBox1_Click(object sender, EventArgs e)
{
form1.pictureBox1.Image = this.pictureBox1.Image;
}

اکنون بر روی pictureBox در Form2 کلیک کنید مشاهده خواهید کرد که تصویر در فرم یک نمایش داده خواهد شد.
نکته: سطح دسترسی pictureBox در Form1 رو به Public تغییر بدید.