c# 윈도우폼 코딩 예외 오류ㅠㅠㅠㅠㅠ

c# 윈도우폼 코딩 예외 오류ㅠㅠㅠㅠㅠ

작성일 2023.11.28댓글 1건
    게시물 수정 , 삭제는 로그인 필요

안녕하세요 갓 c#배운 사람입니다. 사실 c#을 완전히 이해하지 못했지만 기말과제를 준비해야해서 겨우겨우 윈도우폼 어플리케이션을 만들고 있습니다. 비주얼 스튜디오로 계산기를 만드는 중이었습니다. 코딩 할 때는 오류 없었는데 다 하고 실행시는 것 까진 문제가 없었는데 계산기가 계산을 못합니다... 계산을 하려고 사칙연산 누르고 등호만 누르면 저렇게 오류가 나옵니다. 이걸 어떻게 해결해야할지 도저히 모르겠습니다 도와주세요ㅠㅠ
 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CalculatorConsoleApp
{
    public partial class Form1 : Form
    {
        private double saved;
        private char op = '\0';
        public Form1()
        {
            InitializeComponent();
        }

        private void btn0_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            string s = btn.Text;

            if (result.Text == "0")
            {
                result.Text = s;
            }
            else
                result.Text = result.Text + s;
        }

        private void reset_Click(object sender, EventArgs e)
        {
            result.Text = "0";
            saved = 0;
            op = '\0';
        }

        private void erase_Click(object sender, EventArgs e)
        {
            result.Text = result.Text.Remove(result.Text.Length - 1);
        }

        private void plus_Click(object sender, EventArgs e)  //연산창에 연산자가 추가되는 메소드
        {
            Button btn = sender as Button;

            saved = int.Parse(result.Text);
            result.Text = result.Text + "" + btn.Text + "";
            op = btn.Text[0];
        }

        private void equal_Click(object sender, EventArgs e)
        {
            if (op == '+')
                result.Text = (saved + int.Parse(result.Text)).ToString();
            else if(op == '-')
                result.Text = (saved - int.Parse(result.Text)).ToString();
            else if(op == '*')
                result.Text = (saved * int.Parse(result.Text)).ToString();
            else if(op == '÷')
                result.Text = (saved / int.Parse(result.Text)).ToString();
        }
    }
}




#c# 윈도우폼 디자인 #c# 윈도우폼 데이터베이스 #c# 윈도우폼 이미지 #c# 윈도우폼 타이머

profile_image 익명 작성일 -

네, 안녕하세요..!

기말 과제에 특별한 옵션, 꼭 사용해야 하는 부분이 없다면,

아주 간단하게 아래와 같이 작성할 수 있습니다.

검토해 보시고 적당하다 싶으시면, 적용하여 보세요..

그럼..

## 소스코드 파트 ##

using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; namespace Com.ViVaKR.Forms { public partial class CalcForm : Form { public CalcForm() { InitializeComponent(); Load += CalcForm_Load; buttons = new List<Button>(); } // 계산 식 목록 private readonly List<char> expr = new List<char>(); // 메모리 목록 private readonly List<string> memory = new List<string>(); // 버튼 목록 private readonly List<Button> buttons; // 폼 로드 이벤트 private void CalcForm_Load(object sender, EventArgs e) { // 테이블 패널 (5 * 5) 안에 버튼 배치된 것을 버튼 목록화 buttons.AddRange(TblPanel.Controls.OfType<Button>()); foreach (Button button in buttons) { if (string.IsNullOrEmpty(button.Text)) continue; // 버튼 이름, 태그 를 버튼 텍스트로 지정 button.Name = (button.Tag = button.Text).ToString(); button.Font = new System.Drawing.Font(Font.FontFamily, 48, System.Drawing.FontStyle.Bold); // 모든 버튼 클릭 이벤트를 하나로 모음 button.Click += Button_Click; } } /// <summary> /// 버튼의 태그로 각각의 역할 분장 이벤트 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_Click(object sender, EventArgs e) { if (!(sender is Button btn)) return; if (label1.Text.Equals("0")) // 0 만 있으면 지우기 label1.Text = string.Empty; switch (btn.Tag.ToString()) { case "C": // 문자 하나 지우기 expr.RemoveAt(expr.Count() - 1); break; case "AC": // 모두 지우기 expr.Clear(); label1.Text = 0.ToString(); return; case "M": // 메모리 에 임시 저장하기 memory.Add(string.Join(string.Empty, expr)); MessageBox.Show($"기억됨 {string.Join(string.Empty, memory)}"); break; case "=": // 는이면 계산하기 DataTable dt = new DataTable(); var result = dt.Compute(string.Join(string.Empty, expr), string.Empty); label1.Text = $"{string.Join(string.Empty, expr)}={result}"; return; default: // 숫자 버튼과 오퍼레이팅 버튼을 순서대로 저장하기 expr.Add(Convert.ToChar(btn.Tag)); break; } // 저장 된 것을 표시하기 label1.Text = string.Join(string.Empty, expr); } } }

## 폼 디자인 파트 ##

## 출력 결과 예시 ##

(급)c# try catch 윈도우폼 내공 100

... bmp"); } c# try catch 어디위치에 함수 넣어야 하나요 ?? try catch는 오류가 나는 행을... try catch 저절로 나옴 즐거운 코딩하세요

c# 예외가 처리되지 않음[내공100=

... C# 폼에 그리드뷰에 있는 데이터를 SQL 서버 DB에 저장하려고 하는데 오류가 뜨네요 아니면... 보니 코딩이 이상하네요. 위에 작성해 드린...

C# 오류 질문

Visual C# 2010 으로 윈도우 폼을 만들었습니다. 윈도우 폼에 UltraGrid 를 넣어서 데이터를... 오류 메시지 : 호출 대상이 예외를 Throw 했습니다. 아무리 찾아도 원인을 알수가...

게임 DB 제작 할 때 가장 선호하는

... 간단한 게임이라 C#윈도우 폼으로 진행중입니다.1 ) 간단한 아이디 생성 ( 서버... 이걸 예외처리로 코딩을 했을 때 코드 길이는 엄청나게 길어질 것입니다. DB...

[DB관련] 게임 DB 제작 질문입니다.

... 간단한 게임이라 C#윈도우 폼으로 진행중입니다. 1 ) 간단한 아이디 생성 ( 서버... 이걸 예외처리로 코딩을 했을 때 코드 길이는 엄청나게 길어질 것입니다. DB 상에서...

C# 윈도우폼 도와주세요.

C# 윈도우폼 도와주세요. 이 링크 https://kinanadel.blogspot.... 했는데도 오류가 나면서 실행이 안되더군요. 이거... 띄우는 코딩부터 학습하셔야 할 듯 합니다. 굳이...

Microsoft Visual C++ Runtime Library...

... 패리티의 예외 사항 IA64 WOW64용 Front Page Server... 해결하려면 C# 언어 서비스의 모든 사소한 오류... NET에서는 영구 인증 쿠키의 수명이 50년으로 하드코딩...

C# 오류 질문합니다.

윤인성님의 C#책에있는 마지막 장인 도서관리프로그램 프로젝트... 혹시 아시는 분 ㅠㅠ 윈도우 폼인데 처음 부분에서 예외처리...