oranoos_mt
یک شنبه 01 خرداد 1390, 01:03 صبح
سلام
من واسه برنامم چنتا فرم دارم كه هركدوم از اين فرمها واسه خودش چنتا منو و باتن داره
اين منوها و باتن ها كاركردشان در همه فرم ها مثله هم ميباشه
حالا من روي يه فرم همه كارها و همه سورسهاي مربوط به به باتن ها و منوها رو انجام دادم ولي وقتي كدش رو روي فرم هاي ديگه كپي ميكنم جواب نميده. نميدونم چرا :ناراحت:
اينم بگه كه تو همه ي فرمها، همه منوها و همه باتن ها دقيقا مثله هم هستند و شماره هاشونم دقيقا يكيه
يعني وقتي مثلا روي فرم اولي يه باتن دارم مثلا به اسم btn17 .
روي يه فرم ديگه دارم بازهم يه باتن دارم به اسم btn17.
اما وقتي كد رويداد باتن فرم اولي رو در رويداد باتن فرم ديگه كپي ميكنم جواب نميده. البته error هم نميده
اگه راهي داره بهم بگين كه من نيام واسه تك تك اينا كد بنويسم
CYCLOPS
دوشنبه 02 خرداد 1390, 20:12 عصر
دوست عزیز شما داری خط به خط برنامه رو سوال میکنی و پیش میری منظورم این نیست که سوال نپرسید ولی این مطالبی که شما سوال میکنید هیچ ربطی به برنامه نویسی موبایل نداره و صرفا مهارت های کد نویسی و مهارت های سی شارپ هست لطفا با بالا بردن کیفیت سوالات خودتون به بالا رفتن کیفیت بخش هم کمک کنید و قبل از سوال پرسیدن خودتون هم بیشتر تلاش کنید این طور که شما پیش میرید فکر کنم اگر از اول برنامتون رو میدادید یکی از بچه های سایت براتون مینوشت راحت تر بودید
امیدوارم سیل سوالات غیر مرتبط با برنامه نویسی موبایل شما تموم شده باشه و مدیران هم بخش ویندوز موبایل رو از سوالات غیر مرتبط پاکسازی کنند تا نظم بخش مثل قبل بشه
موفق باشید :متفکر:
omn!a2
سه شنبه 03 خرداد 1390, 03:23 صبح
سلام
ببین تو داری اشتباه میکنی اگه میخوای همه ی کدها رو تکرار بکنی تو فرم های دیگه حجم برنامت میره بالا سرعتش هم کند میشه تو میتونی از یه کلاس برای کدهای مشترک استفاده بکنی حالا من یه کلاس برای برنامت نوشتم که هم کدهاش خیلی کم تر از کدهایی که برای رویداد کلید ها نوشته بودید هست و هم استاندارد تره تصور کن اگه برای هر کدام از کلیدها نزدیک به 100 خط نوشتی و میخوای همه ی اینها رو تو تمام فرمها تکرار کنی در این کلاس از 7 - 8 خط تجاوز نمیکنه! و برای همه فرمها مشترک هست
خواستم آپلودش کنم نمیشه
اینم کد
کد مربوط به Class1
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace Taghvim_1
{
public class Class1
{
public int i = 0;
//متد برای منو ها
public void Form_mah(Form show, Form close )
{
show.Show();
close.Close();
}
//متد برای کلید چپ
public void select_left(PictureBox pictureBox_Move, PictureBox picBox_Select, PictureBox picBox_next, Form nextform, Form close)
{
i ++; // برای شمارش کلیک ها با کلید چپ
if (pictureBox_Move.Location == new Point(picBox_Select.Location.X - 3, picBox_Select.Location.Y - 3))
{
pictureBox_Move.Location = new Point(picBox_next.Location.X - 3, picBox_next.Location.Y - 3);
pictureBox_Move.Image = picBox_next.Image;
}
if (i == 31)//اگر به 31 رسید فرم دیگری باز میشود
{
nextform.Show();
close.Close();
}
}
//متد برای کلید راست
public void select_Right(PictureBox pictureBox_Move, PictureBox picBox_Select, PictureBox picBox_next, Form nextform, Form close)
{
if (pictureBox_Move.Location == new Point(picBox_Select.Location.X - 3, picBox_Select.Location.Y - 3))
{
pictureBox_Move.Location = new Point(picBox_next.Location.X - 3, picBox_next.Location.Y - 3);
pictureBox_Move.Image = picBox_next.Image;
}
if (i == 0)//اگر به 0 رسید فرم دیگری باز میشود
{
nextform.Show();
close.Close();
}
i--; // برای شمارش معکوس کلیک ها با کلید راست
}
}
}
این کدها رو باید تو همه ی فرم ها بنویسید فقط نام فرمهایی که باید باز شوند تو هر فرم فرق میکنه
namespace Taghvim_1
{
public partial class frkhor : Form
{
//*****************************//
Class1 cls = new Class1();
PictureBox[] picbox;
int i = 0;
//*****************************//
public frkhor()
{
InitializeComponent();
//قرار دادن پیکچرباکس50 روی پیکچرباکس1
pictureBox50.Location = new Point(pictureBox1.Location.X - 3, pictureBox1.Location.Y - 3);
pictureBox50.Image = pictureBox1.Image;
}
private void menuItem2_Click(object sender, EventArgs e)
{
frmordad mordad = new frmordad();
//پارامتر اول مربوط به فرمی که باید باز شود
//و پارامتر دوم فرمی که باید بسته شود
cls.Form_mah(mordad, this);
}
private void menuItem3_Click(object sender, EventArgs e)
{
frtir tir = new frtir();
cls.Form_mah(tir, this);
}
private void menuItem4_Click(object sender, EventArgs e)
{
frkhor khordad = new frkhor();
cls.Form_mah(khordad , this);
}
private void frkhor_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == System.Windows.Forms.Keys.Left))
{
// Left
frtir tir = new frtir();//ماه بعد
i++; //برای آدرس دهی آرایه ی باتن ها
if (i == 31)//اگر به 31 رسید مقدارش 1 میشود تا عدد بزرگتر از طول آرایه به پارامتر فرستاده نشود
i = 1;
//پارامتر دادن به متد کلید چپ در کلاس کلاس1
cls.select_left(
pictureBox50, //نام پیکجرباکس متحرک
picbox[i-1], //پیکچرباکسی که پیکچرباکس متحرک بر روی آن قرار دارد در اینجا
// یعنی پیکچر باکس1 که در آرایه صفر قرار دارد
picbox[i],//پیکچرباکس بعدی برای انتقال پیکچرباکس متحرک بر روی آن در اینجا یعنی پیکچرباکس2
tir, //فرم ماه بعدی
this //فرمی که باید بسته شود
);
}
if ((e.KeyCode == System.Windows.Forms.Keys.Right))
{
// Right
frkhor khordad = new frkhor();
if (i == 0)//اگر به 31 رسید مقدارش 1 میشود تا عدد کوچکتر از طول آرایه به پارامتر فرستاده نشود
i = 1;
//پارامتر دادن به متد کلید راست در کلاس کلاس1
cls.select_Right(
pictureBox50, //نام پیکجرباکس متحرک
picbox[i], //پیکچرباکسی که پیکچرباکس متحرک بر روی آن قرار دارد
picbox[i-1],//پیکچرباکس قبلی برای انتقال پیکچرباکس متحرک بر روی آن
khordad, //فرم ماه قبل
this //فرمی که باید بسته شود
);
i--; //شمارش معکوس برای آدرس دهی نزولی
}
}
private void frkhor_Load(object sender, EventArgs e)
{
//پر کردن آرایه با باتن های روزها
picbox = new PictureBox[31]{
pictureBox1,pictureBox2,pictureBox3,
pictureBox4,pictureBox5,pictureBox6,
pictureBox7,pictureBox8,pictureBox9,
pictureBox10,pictureBox11,pictureBox12,
pictureBox13,pictureBox14,pictureBox15,
pictureBox16,pictureBox17,pictureBox18,
pictureBox19,pictureBox20,pictureBox21,
pictureBox22,pictureBox23,pictureBox24,
pictureBox25,pictureBox26,pictureBox27,
pictureBox28,pictureBox29,pictureBox30,
pictureBox31 };
}
}
}
در ضمن باید همه باتن های مربوط به روزها را به ترتیب از pictureBox1 تا pictureBox31 نام گذاری کنی
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.