C\#달력 스타일 의 드 롭 다운 계산기 인 스 턴 스 설명
소개 하 다.
만약 우리 가 재고 통제 와 비용 계산 시스템 과 유사 한 프로젝트 를 하고 있다 면,어떤 부분 은 수 동 으로 수 치 를 계산 해 야 할 수도 있다.따라서 사용 자 는 계산 기 를 사용 하여 결 과 를 얻 고 입력 필드 에 입력 하거나 작업 창 에 계산기 창 을 따로 열 어야 합 니 다.한 마디 로 각종 불편 과 번 거 로 움.
이 글 은 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 에 컨트롤 을 추가 하면 인터페이스 가 더욱 상호작용 을 할 수 있 습 니 다.좋아 하 는 친 구 는 좋아요 를 누 르 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.