زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
یه برنامه نوشتم که تو قسمت تنظیمات میشه تصویر بکگراند روی فرم اصلی را تغییر داد.
فقط من کاری کردم که وقتی فرم تنظیمات بسته میشه و روی بکگراند فرم اصلی کلیک کنی عکس عوض میشه و یا این که باید برنامه را یه بار دیگه اجرا کرد تا تغییر را ببینی.
نتونستم کاری کنم که به محض تأیید فرم تنظیمات، خودبه خود عکس فرم اصلی عوض بشه
منو راهنمایی می کنین؟
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
1.یا باید کنترلت رو از نوع Public تعریف کنی.
2.میتونی از کلاس ها هم استفاده کنی.
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
من متوجه نشدم
این قسمتی از فرم تنظیمات من است
public partial class frmconfig : Form
{
myConfig conf = new myConfig();
public frmconfig()
{
InitializeComponent();
conf.SelectAllConfig();
txtbackground.Text = conf.Dvconf[0]["BACKGROUNDPIC"].ToString();
}
//********
//دکمه ی سیو
//********
private void btnSave_Click(object sender, EventArgs e)
{
//وقتی این دکمه زده می شود من انتظار دارم
//که تصویر در بکگراند فرم اصلی نمایش داده بشه
conf.UpConfigBackgroundPath(txtbackground.Text.Tri m());
this.Close();
}
//دکمه های دیگر
//OpenFileDialog دکمه های
private void btnsearch_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = " jpg تصاویر|*.jpg|gif عکسهای فشرده|*.Gif|jpeg تصاویر|*.jpeg" +
"|*.jpg , *.jpeg, *.gif همه عکسهای|*.jpg;*.jpeg;*.gif" ;
fd.ShowDialog();
txtbackground.Text = fd.FileName.ToString();
}
وقتی برنامه شروع میشه و یا روی عکس کلیک میشه آدرس تصویری که قبلا در sql ذخیره شده عکس را پیدا میکنه و در فرم اصلی میذاره
//آوردن عکس پس زمینه یا بکگراند
public void imageground()
{
myConfig conf = new myConfig();
conf.SelectAllConfig();
try
{
pictureBox1.BackgroundImage= Image.FromFile(conf.Dvconf[0]["BACKGROUNDPIC"].ToString());
}
catch
{
}
}
اما من نمی خوام که اینجوری باشه
می خوام به محض کلیک روی فرم config یا همون فرم تنظیمات، فرم بسته بشه و حالا عکس روی فرم اصلی عوض شده باشه
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
خوب بعد از showdialog کردن فرم config تابع imageground() رو اجرا کنید.
البته این تابع داخل فرم اصلیتون تعریف شده دیگه؟
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
نقل قول:
نوشته شده توسط
Marzieh_A
خوب بعد از showdialog کردن فرم config تابع imageground() رو اجرا کنید.
البته این تابع داخل فرم اصلیتون تعریف شده دیگه؟
بله در فرم اصلی تعریف شده
فقط مسئله این جا است که:
هنگامی که فرم config یا همون فرم تنظیمات باز میشه، فرم اصلی هم در زیر این فرم وجود داره و نباید هم بسته بشه چون همه ی منو ها همانند منوی تنظیمات در این فرم وجود داره.
خب مشکل هم همین جاست چون فرم اصلی فقط یکبار آن هم بار اول فراخوانی میشه .
درضمن
من در قسمت های کار روی grid این کار را انجام دادم و هنگامی که فرم نمایش اعضا نمایش داده میشه اگر روی دکمه ی ویرایش یا عضو جدید در روی همون فرم کلیک شود، فرم جدید روی فرم نمایش اعضا باز میشه و با تغییر روی فرم ها grig فرم زیر هم تغییر می کنه.
مثلا فرم نمایش کاربران دکمه ای برای ویرایش داره:
private void GrdUsers_MouseDoubleClick(object sender, MouseEventArgs e)
{
config.myUserID = Convert.ToInt32(GrdUsers.CurrentRow.Cells[0].Value.ToString());
//صدازدن فرم دوم
frmUpUser upuser = new frmUpUser();
upuser.MygrdView = GrdUsers;
//حال در اینجا فرم دوم یا همون فرم ویرایش کاربران روی همین فرم جاری نمایش داده میشه
upuser.ShowDialog();
}
این هم نمونهای از کد فرم دوم یا فرم ویرایش
من از این کد در فرم ویرایش کاربر استفاده کردم
// (frmUser)در صورت زدن دکمه ویرایش، اعمال تغییرات روی فرم دیگر
DataGridView mygrdView = new DataGridView();
public DataGridView MygrdView
{
get { return mygrdView; }
set { mygrdView = value; }
}
//
که به درستی کار میکنه
اما برای تصویر بکگراند نمیدونم چه طوری باید بلافاصله تغییر در فرم زیرین(فرم اصلی) ایجاد بشه؟
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
ببینید شما می تونی بعد از showdialog() مربوط به فرم تنظیمات background صفحه رو عوض کنید که در این صورت، تغییر تصویر پس زمینه تا وفتی که فرم تنظیمات بسته نشه انجام نمی شه.
اما برای اینکه بلافاصله پس زمینۀ فرم عوض بشه می تونید در هر فرمی از برنامه که هستید از این کد استفاده کنید:
Application.OpenForms["MainFormName"].BackgroundImage = تصویر مربوطه
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
نقل قول:
ببینید شما می تونی بعد از showdialog() مربوط به فرم تنظیمات background صفحه رو عوض کنید که در این صورت، تغییر تصویر پس زمینه تا وفتی که فرم تنظیمات بسته نشه انجام نمی شه.
اما برای اینکه بلافاصله پس زمینۀ فرم عوض بشه می تونید در هر فرمی از برنامه که هستید از این کد استفاده کنید:
کد:
Application.OpenForms["MainFormName"].BackgroundImage = تصویر مربوطه
باز هم یه مشکلی هست و اون هم اینه که تصویر را در فرم اصلی در یک picture box گذاشتم و تصویر، بکگراند فرم نیست.
حالا باید چه کار کنم؟
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
نقل قول:
نوشته شده توسط
zayens
باز هم یه مشکلی هست و اون هم اینه که تصویر را در فرم اصلی در یک picture box گذاشتم و تصویر، بکگراند فرم نیست.
حالا باید چه کار کنم؟
PictureBox Pic = Application.OpenForms["MainFormName"].Controls["PictureBoxName"] asPictureBox;
Pic.Image = تصویر مربوطه;
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
از راهنماییتون بسیار ممنون
مشکلم حل شد
کد زیر را در فرم تنظیمات اضافه کردم و حالا به محض کلیک seve و بسته شدن فرم تنظیمات ، تصویر در فرم اصلی عوض میشه
privatevoid frmconfig_FormClosed(object sender, FormClosedEventArgs e)
{
myConfig conf = newmyConfig();
conf.SelectAllConfig();
PictureBox Pic = Application.OpenForms["frmMain"].Controls["pictureBox1"] asPictureBox;
Pic.Image = Image.FromFile(conf.Dvconf[0]["BACKGROUNDPIC"].ToString());
}
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
نقل قول:
نوشته شده توسط
zayens
راستی یه سوال دیگه
چه طور میشه عکس را اتوماتیک Stretch قرار داد.
البته بوسیله ی کد.
یعنی از backGroundimageLayout چه طور میشه استفاده کرد؟
باز هم ممنون
برای اینکه image داخل یه picturebox رو به صوزت stretch ببینی بعد از اینکه یه picturebox مثلا به اسم Pic ایجاد کردی این کد رو استفاده کن :
Pic.SizeMode = PictureBoxSizeMode.StretchImage;
اما backGroundimageLayout وقتی استفاده میشه که backgroundimage کنترل یا فرم مربوطه مقدار دهی بشه، که در اون صورت باید از این کد استفاده کنید (به عنوان مثال Pic نام کنترل هست) :
Pic.BackgroundImageLayout = ImageLayout.Stretch;
اما شما خصوصیت image از picturebox رو مقدار دهی کردی پس باید از کد حالت اول استفاده کنی.
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
بازهم از راهنماییتون ممنون
راستی دارم با کریستال ریپورت کار می کنم
اگه یه کد آماده برای تهیه ی فیش حقوقی(قسمت طراحی جدول و ستون بندی ) داری برام میفرستی؟
معلومه که می فرستی.:لبخندساده:
ممنون
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
دوباره یه سوال آسون به ذهنم رسید گفتم بپرسم.
من یه فرم اصلی دارم با دکمه هایی خاص که هر دکمه، فرمی را روی فرم اصلی باز میکنه.
وقتی فرم باز میشه دسترسی به فرم اصلی در زیر این فرم غیر فعال میشه.
چه طور میشه که بشه؟
لطفا اگر در properties میشه تنظیمات فرم رویی را عوض کرد بگید، در غیر این صورت اگه کدی وجود داره لطفا برام بذارید.
آقایون و خانومای برنامه نویس...بازهم ممنون
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
ببخشید یه سوال دیگه هم داره میاد تو ذهنم .... آره اومد ... درباره ی کامپوننت janus هستش
یه ButtonBar چه جوری کار میکنه؟
وقتی من در هر group چند تا New Item میسازم تا وقتی کاربر هر آیتم را کلیک کنه به فرمی بره، این کار انجام نمیشه
در واقع وقتی روی هر آیتم دابل کلیک می کنم تا کدی براشون تعریف کنم همشون یه تابع را باز می کنن... آخه واسه چی؟؟
راستی .... بازم ممنون
نقل قول: زدن یک دکمه در فرم و اجرای عملیات روی فرمی دیگر
نقل قول:
ببخشید یه سوال دیگه هم داره میاد تو ذهنم .... آره اومد ... درباره ی کامپوننت janus هستش
دوست عزیز، هر تاپیک برای بحث درباره یک موضوع هست؛ همان موضوعی که در عنوان تاپیک ذکر کردید.
اگر سوالهای مختلفی دارید که با موضوع تاپیک مستقیما مربوط نمیشند، باید ابتدا جستجو کنید که سوالتان تکراری نباشه، اگر تکراری نبود، آن را در یک تاپیک جداگانه ارسال کنید. نه اینکه همه سوالهای خودتان را در یک تاپیک بپرسید.
موفق باشید