C\#달력 스타일 의 드 롭 다운 계산기 인 스 턴 스 설명

이 논문 은 Visual Studio 에서 드 롭 다운 계산 기 를 표시 하 는 사용자 컨트롤 을 만 드 는 방법 을 소개 합 니 다.팝 업 효 과 는 달력 컨트롤 과 유사 합 니 다.
소개 하 다.
만약 우리 가 재고 통제 와 비용 계산 시스템 과 유사 한 프로젝트 를 하고 있다 면,어떤 부분 은 수 동 으로 수 치 를 계산 해 야 할 수도 있다.따라서 사용 자 는 계산 기 를 사용 하여 결 과 를 얻 고 입력 필드 에 입력 하거나 작업 창 에 계산기 창 을 따로 열 어야 합 니 다.한 마디 로 각종 불편 과 번 거 로 움.
이 글 은 DataGridView 셀 에 드 롭 다운 계산 기 를 어떻게 추가 하 는 지 설명 합 니 다.다음 그림 입 니 다.


사용 코드
첫 번 째 단 계 는 함수 계산 기 를 만 들 고 컨트롤 을 사용 해 야 합 니 다.따라서 Visual Studio 사용자 정의 컨트롤 을 만 드 는 것 도 좋 습 니 다.어떻게 하지?VS 를 열 고 새로운 Windows 창 프로그램 을 만 듭 니 다.(심지어 현재 프로젝트 에서 도 그 럴 수 있 지만 분리 해서 결합 하 는 것 이 좋 습 니 다.)
그리고 Solution Explorer 에서 항목 을 오른쪽 클릭 하고 add->User Control 을 선택 하 십시오.이름("Calculator Control"을 사용 합 니 다)을 붙 이 고 추가 합 니 다.이 때 는 작업 공간 같은 윈도 창 을 줄 것 이다.그 위 에 컨트롤 도구 상자 에 있 는 TextBox 와 Button 으로 계산기 의 레이아웃 을 만 듭 니 다.레이아웃 이 작 을 수록 좋 습 니 다.계산기 일 뿐 입 니 다.

계산기 기능 을 빠르게 처리 하기 위해 여 기 를 클릭 하여 NCal(바 이 너 리 파일 다운로드 확보)를 다운로드 하고 항목 의 참조 파일 에 추가 할 수 있 습 니 다.
모든 숫자 단추 의 클릭 이 벤트 를 실현 하고 해당 하 는 숫자 를 텍스트 상자 에 입력/(추가)한 다음+,X,/...와 같은 방식 으로 다른 단 추 를 실현 하고 해당 하 는 기 호 를 텍스트 상자 에 입력/(추가)합 니 다.
예 를 들 어 텍스트 상자 에 입력:2*3+4
그리고 다음 코드 를 사용 하여 표현 식 을 검증 하고 결 과 를 얻 습 니 다.

// 
using System.Windows.Forms; 
using NCalc; 
// 
  string resText; 
  bool eqPressed; 
  double result; 
 
public void btnEqual_Click(object sender, EventArgs e) 
    { 
      Expression ex = new Expression(textBox1.Text); 
      if (ex.HasErrors()) 
      { 
        //Invalid Expression 
      } 
      else 
      { 
        result = Convert.ToDouble(ex.Evaluate()); 
        resText = result.ToString(); 
      } 
      textBox1.Text = resText; 
      text = resText; 
      eqPressed = true; 
 
    } 
// 
현재 계산기 기능 이 이미 완성 되 었 다.솔 루 션 을 직접 구축 하면 사용자 컨트롤 이 공구 상자 상단 에 표시 되 는 것 을 발견 할 수 있 습 니 다.Windows 창 을 추가 할 수 있 습 니 다.사용자 컨트롤 을 창 에 끌 어 다 놓 고 실행 할 수 있 습 니 다.정상적으로 작 동 할 수 있 는 지 확인 하 십시오.
그리고 드 롭 다운 계산 기 를 추가 하려 는 항목 에 작은 단추 만 있 는 다른 사용자 컨트롤 을 만 듭 니 다.이 단 추 는 계산 기 를 여 는 데 사 용 될 것 이다.
Calculator Control 에 인용 파일 을 항목 에 추가 합 니 다.
새로운 계승 ToolStripDropDown 클래스 만 들 기:

using System.Windows.Forms; 
 
class CalDrop : ToolStripDropDown 
  { 
   Control content; 
   ToolStripControlHost drop; 
 
public CalDrop(CalculatorControl content) 
    { 
 
      this.content = content; 
 
      this.drop= new System.Windows.Forms.ToolStripControlHost(content); 
 
      //Add the host to the list 
      this.Items.Add(this.drop); 
    } 
} 
단 추 를 누 른 이벤트 에 다음 코드 를 추가 합 니 다:

private void button1_Click(object sender, EventArgs e) 
    { 
      CalculatorControl calculator = new CalculatorControl(); 
      CalDrop cal = new CalDrop(calculator); 
 
      Point controlLoc = fm.PointToScreen(button1.Location); 
      Point relativeLoc = new Point(controlLoc.X + button1.Width + 100, 
  controlLoc.Y + button1.Height * 2); 
      Rectangle calRect = button1.DisplayRectangle; 
      cal.Show(locPoint); 
    } 
DataGridViewCell 에 컨트롤 추가
솔 루 션 을 구축 할 때 새 단추 컨트롤 이 도구 상자 에 나타 납 니 다.항목 의 창 클래스 에 다음 코드 를 추가 합 니 다.

private CalculatorPick calculator; 
 
public form1() 
{ 
      calculator = new CalculatorPick(); 
 
      calculator.Visible = false; 
      dataGridView2.Controls.Add(calculator); 
} 
 
private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
        if (e.ColumnIndex == clmCommision.Index) 
        { 
          Rectangle calRect = dataGridView2.GetCellDisplayRectangle 
   (e.ColumnIndex, e.RowIndex,false);          
 
          Point p = calculator.FindForm().PointToClient 
  (calculator.Parent.PointToScreen(calculator.Location)); 
          p.X -= calculator.Width/3; 
          p.Y += calculator.Height; 
          calculator.LocPoint = p; 
 
          calculator.Width = calRect.Width/3; 
          calculator.Height = calRect.Height; 
 
          calculator.Visible = true; 
          calculator.Calculator.btnEqual.Click += new EventHandler(calculatorBtnEqlClicked); 
        } 
        else 
          if(calculator!=null) 
          calculator.Visible = false; 
} 
 
void calculatorBtnEqlClicked(object sender, EventArgs e) 
{      
      dataGridView2.CurrentCell.Value = calculator.Calculator.Result.ToString();      
} 
이 기술 은 DataGridView 에 컨트롤 을 추가 하면 인터페이스 가 더욱 상호작용 을 할 수 있 습 니 다.좋아 하 는 친 구 는 좋아요 를 누 르 세 요!

좋은 웹페이지 즐겨찾기