PDA

View Full Version : مبتدی: مشکل در اجرای یک خط کد در سی شارپ



habiballahafg
دوشنبه 18 اسفند 1393, 12:13 عصر
با سلام دوستان
من یک برنامه ادیتور به زبان سی شارپ طراحی کردم همه چیز درست هست ولی وقتی میخوام اجرا کنم این خط رو ایراد میگیره. چون من تازه کار هستم نمیدونم که برای چی هست به هر دو زبان فارسی و انگلیسی سرچ کردم ولی جواب پیدا نکردم.
ممنون میشم اگر کمک کنید:
new System.EventHandler(this.skrivUtToolStripMenuItem_ Click);
عکس از متن ارور رو هم گذاشتم.
129302
تشکر فراوان

esafb52
دوشنبه 18 اسفند 1393, 12:45 عصر
شما احتمالا چیزی رو دستکاری کردین چون این کدها مربوط به دیزاینر هست و شما اون رو ننوشتین ولی نوعی فراخوانی دلیگیت EventHandler تون اشتباهه و خطا میگه هیچ نوع اورلودی برای این طریقه مقدار دهی نیست متد مورد نظر رو نذاشتید کد را کامل بذارید منظورم این متد هست :this.skrivUtToolStripMenuItem_ Click

SabaSabouhi
دوشنبه 18 اسفند 1393, 14:02 عصر
با سلام دوستان
من یک برنامه ادیتور به زبان سی شارپ طراحی کردم همه چیز درست هست ولی وقتی میخوام اجرا کنم این خط رو ایراد میگیره. چون من تازه کار هستم نمیدونم که برای چی هست به هر دو زبان فارسی و انگلیسی سرچ کردم ولی جواب پیدا نکردم.
ممنون میشم اگر کمک کنید:
new System.EventHandler(this.skrivUtToolStripMenuItem_ Click);
عکس از متن ارور رو هم گذاشتم.
129302
تشکر فراوان

سلام وقتی می‌خوای یک Eventhandler تعیین کنی، باید امضای اون متد دقیقاً شبیه Delegate معرفی شده باشه.
مثلاً اگه متد شما مقدار برگشتی داشته باشه دیگه به عنوان متد click نمی‌تونی ازش استفاده کنی.
دقیقاً یعنی تمام مقادیر ورودی و خروجی باید مطابق با تعریف باشه، نه کمتر و نه بیشتر.

صبا صبوحی

habiballahafg
دوشنبه 18 اسفند 1393, 14:14 عصر
این کد کامل هست:
private void skrivUtToolStripMenuItem_Click(object sender,System.Drawing.Printing.PrintPageEventArgs e) {
string texten = textBox1.Text;
strangTillSkrivare = new StringReader(texten);
if (printDialog1.ShowDialog() == DialogResult.OK)
{
this.printDocument1.Print();
}
Font skrivarFont = textBox1.Font;
SolidBrush skrivarpensel = new SolidBrush(Color.Black);
float positionX = e.MarginBounds.Left;
float positionY = 0;
float raderPerSida = e.MarginBounds.Height;
skrivarFont.GetHeight(e.Graphics);
int utskrivnaRader = 0;
while (utskrivnaRader < raderPerSida & (rad = strangTillSkrivare.ReadLine())!= null)
{
positionY = e.MarginBounds.Top + (utskrivnaRader * skrivarFont.GetHeight(e.Graphics));
e.Graphics.DrawString(rad,skrivarFont,skrivarpense l,positionX,positionY,new StringFormat());
utskrivnaRader ++;
}
if(rad != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
}

esafb52
دوشنبه 18 اسفند 1393, 15:20 عصر
اون قسمت خطا رو به این شکل تغییر بدین

new EventHandler<PrintPageEventArgs>(skrivUtToolStripMenuItem_Click);

ببینین چی میشه؟

habiballahafg
سه شنبه 19 اسفند 1393, 12:50 عصر
مشکل حل شد تشکر از دوستان
من الان یه مشکل دیگه دارم این هست که میخوام درون برنامه که 4 تا تکست باکس دارم بعد از زدن دکمه توسط کاربر توسط شرط if همه این 4 تا تکست باکس بررسی یشند. ممکن است توضیح بدید که چطور می تونم این کار رو انجام بدهم؟
تشکر