PDA

View Full Version : سوال: مشکل در کد نویسی مربوط به پروژه ماشین حساب مهندسی



m.lajevardi
یک شنبه 04 فروردین 1392, 10:39 صبح
با سلام در کد زیر من هر بار با صفحه کلید هر عددی را میزنم در textBox من 2 بار حک میشود
راهنمائیم کنید.

if (e.Keys==Numberpad1)
btn.Performclick();
private void btn_Click(object sender, EventArgs e)
{
Button btnclick = (Button)sender;
if (textScreen.Text != "0")
textScreen.Text = textScreen.Text + btnclick.Text;
}

m.lajevardi
یک شنبه 04 فروردین 1392, 11:07 صبح
یعنی کسی از دوستا ننیست پاسخ من را بدهد

m.lajevardi
یک شنبه 04 فروردین 1392, 13:48 عصر
if (e.Keys==Numberpad1) در کدام رویداده اونو کامل بزارید.
در رویداد Key_UP و در رویداد Key_Press هم چک کردم که فقط عدد وارد شود

RED-C0DE
یک شنبه 04 فروردین 1392, 13:54 عصر
فقط در یک رویداد این بررسی رو انجام بدید
ابتدا کامنت کن ببین درست می شه بعدش مثلا فقط رویداد KeyPress رو نگه دار و KeyUp رو پاک کن

در مورد "فقط وارد شدن عدد در TextBox" جستجو کن تا یک textbox درست حسابی برای این کار داشته باشی در نهایت

tooraj_azizi_1035
یک شنبه 04 فروردین 1392, 13:55 عصر
شما باید در یکی از دو رویداد کد رو بنویسید.

m.lajevardi
یک شنبه 04 فروردین 1392, 13:56 عصر
در مورد "فقط وارد شدن عدد در TextBox" جستجو کن تا یک textbox درست حسابی برای این کار داشته باشی در نهایت
منم در رویداد key_Press مربوط به textBox چک کردم

tooraj_azizi_1035
یک شنبه 04 فروردین 1392, 13:57 عصر
توجه کردی چی گفتم؟

RED-C0DE
یک شنبه 04 فروردین 1392, 13:58 عصر
همونطور گ دوستان هم گفتن ، فقط در یک چک بشه نه در 2 رویداد ک شما گفتین در ابتدا

برنامتون رو بذارین اگه هنوز مشکل دارین

m.lajevardi
یک شنبه 04 فروردین 1392, 13:59 عصر
توجه کردی چی گفتم؟
منظورتو متوجه نشدم میشه توضیح بیشتر بدید

tooraj_azizi_1035
یک شنبه 04 فروردین 1392, 14:03 عصر
کدتو کامل بذار.

m.lajevardi
یک شنبه 04 فروردین 1392, 14:07 عصر
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Calculater
{
public partial class Form1 : Form
{
#region Form

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
textScreen.Clear();
}

#endregion

#region Var

char[] array;
string[] postfix = new string[30];
Stack<string> stack1 = new Stack<string>();

#endregion

#region Key(Press,Down,Up)

private void textScreen_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsLetter(e.KeyChar))
e.Handled = true;
}

private void textScreen_KeyUp(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.NumPad0:
btn0.PerformClick();
break;
case Keys.NumPad1:
btn1.PerformClick();
break;
case Keys.NumPad2:
btn2.PerformClick();
break;
case Keys.NumPad3:
btn3.PerformClick();
break;
case Keys.NumPad4:
btn4.PerformClick();
break;
case Keys.NumPad5:
btn5.PerformClick();
break;
case Keys.NumPad6:
btn6.PerformClick();
break;
case Keys.NumPad7:
btn7.PerformClick();
break;
case Keys.NumPad8:
btn8.PerformClick();
break;
case Keys.NumPad9:
btn9.PerformClick();
break;
case Keys.Add:
btnAdd.PerformClick();
break;
}
}

#endregion



#region Button_Click

private void btn_Click(object sender, EventArgs e)
{
Button btnclick = (Button)sender;
if (textScreen.Text != "0")
textScreen.Text = textScreen.Text + btnclick.Text;
}


#endregion

}
}

RED-C0DE
یک شنبه 04 فروردین 1392, 14:20 عصر
رویداد textScreen_KeyUp رو کلا برش دار تا اون مشکلت حل ش

m.lajevardi
یک شنبه 04 فروردین 1392, 14:32 عصر
رویداد textScreen_KeyUp رو کلا برش دار تا اون مشکلت حل ش
کد های ان را در key_Press بنویسم

RED-C0DE
یک شنبه 04 فروردین 1392, 14:36 عصر
اصلا ننویسشون جایی
کلا حذفشون کن بعد تست کن برنامت رو
دیباگ کن. با دیباگ کردن آشنا شو و سعی کن استفاده کنی ازش و یاد بگیریش خیلی بدردت می خوره در ادامه

یکم برو جلو و اینور اونور کن برنامت رو با کدها بازی کن چیزای مختلف کارای مختلف بکن و نترس

m.lajevardi
دوشنبه 05 فروردین 1392, 10:21 صبح
اصلا ننویسشون جایی
کلا حذفشون کن بعد تست کن برنامت رو

با سلام مجدد و تشکر
کلا حذف کردم و درست شد ولی اگر با اعداد روی ماشین حساب کار کنم دیگر نمیتوان با صفحه کلید کار کرد

Mahmoud.Afrad
دوشنبه 05 فروردین 1392, 10:42 صبح
با سلام مجدد و تشکر
کلا حذف کردم و درست شد ولی اگر با اعداد روی ماشین حساب کار کنم دیگر نمیتوان با صفحه کلید کار کرد
برای اینه که فوکوس از روی تکست باکس برداشته میشه.
در رویداد KeyDownفرم ، رویداد KeyPress را فراخوانی کن(قبلش key preview فرم را true کن):

private void FrmMain_KeyDown(object sender, KeyEventArgs e)
{
char ch = (char)e.KeyValue;
if (char.IsDigit(ch) || char.IsControl(ch))
{
textBox1_KeyPress(sender, new KeyPressEventArgs(ch));
}
else if (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9)
{
ch = Convert.ToChar(e.KeyCode.ToString().Substring(6));
textBox1_KeyPress(sender, new KeyPressEventArgs(ch));
}
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (textBox1.Focused)
{
e.Handled = !(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar));
}
else
{
textBox1.Text += e.KeyChar;
}
}