안녕하세요~! 문쑹입니다 :) 오늘부터는 예제를 많이 다뤄서 프로그램을 만들어 볼 수 있게 해보겠습니다.
Chart 컨트롤 사용하기
위와 같은 화면처럼 도구상자에서 차트와 버튼을 각각 하나씩 만들어 주세요.
차트의 속성에서 Series의 컬렉션 설정에 들어가줍니다.
Series 컬렉션 편집기에서 이름을 Score로 변경해주세요!
namespace ChartControlApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "Using Chart Control";
// 10명의 학생 랜덤점수 생성 및 차트 바인딩
Random r = new Random();
chart1.Titles.Add("중간고사 성적");
for(int i=0; i<10; i++)
{
int val = r.Next(10, 100);
chart1.Series["Score"].Points.Add(val) ;
//chart1.Series["Score"].ToolTip = val.ToString();
}
chart1.Series["Score"].LegendText = "수학점수";
chart1.Series["Score"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
chart1.Series["Score"].ToolTip = "테스트";
}
private void button1_Click(object sender, EventArgs e)
{
chart1.Series["Score"].Points.Clear();
MessageBox.Show("데이터를 지웠습니다.", "처리",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
디자인을 좀더 꾸며보는 툴을 설치해보겠습니다.
만든 프로젝트 아래 "참조"에서 NuGet 패키지 관리를 실행시켜주세요.
찾아보기를 클릭해주세요 그리고 검색창에 MetroUI라고 검색해주세요.
위와 같은 그림의 프로그램을 설치해주세요! 버전은 각자의 컴퓨터에 맞게 설치해주시면 됩니다.
꼭 자신이 설치할려는 프로젝트가 맞는지 확인하세요!
3가지가 추가되었는걸 확인할 수 있습니다.
아래의 코드처럼 Form을 MetroFramework.Forms.MetroForm 변경해주세요
public partial class Form1 : MetroFramework.Forms.MetroForm
Clear 버튼도 변경해보겠습니다.
private void button1_Click(object sender, EventArgs e)
{
chart1.Series["Score"].Points.Clear();
MetroMessageBox.Show(this,"데이터를 지웠습니다.", "처리",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
MessageBox를 MetroMessageBox로 코드를 변경하여 버튼 Clear를 하였을 때도 UI변경을 주었습니다. 혹시나 빨간줄이 그여있거나 그러면 Alt+Enter를 눌려서 Usingusing MetroFramework를 추가해주세요!
이번에는 책대여 시스템 예제를 살펴보겠습니다.
우선 SSMS(SQL Server)를 실행해주세요.
USE bookrentalshopDB
GO
CREATE TABLE userTbl (
id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
userID varchar(12) NOT NULL,
password varchar(max) NOT NULL,
lastLoginDt datetime NULL,
loginIpAddr varchar(30) NULL
)
GO
그리고 위의 코드를 실행 시켜주세요! DB가 없다면 새로운 DB를 생성해주신 다음 테이블을 생성해주세요.
다음 userTbl로 가서 행 편집을 해주세요
userID = admin / password = 12345 로 설정해주시고 다시 Visual Studio로 이동해주세요
BookRentalShop20이란 이름으로 새 프로젝트 하나 생성 해줍시다.
그리고 아까 위에서 설치했던 Nuget을 프로젝트에 설치해주세요! Nuget은 프로젝트마다 설치를 해줘야하기 때문에 BookRentalShop20 프로젝트 - 참조 - MetroUI를 검색하고 위에서 언급했던 설치방법과 동일하게 진행해주세요!
True로 변경해주세요 form안에 form을 작성가능하게 해줍니다.
위의 그림들과 같이 설정해주세요.
ID와 Password의 속성을 변경해주세요
서버 탐색기 - 데이터 연결 - 추가를 해주세요
위와 같이 데이터베이스를 연결한 다음
다시 속성창에서 연결 문자열을 전부 복사해주세요.
using MetroFramework.Forms;
using System;
using System.Windows.Forms;
namespace BookRentalShop20
{
public partial class LoginForm : MetroForm
{
//DB연결시 필수 작업
string strConnString = "Data Source=127.0.0.1;Initial Catalog=BookRentalshopDB;Persist Security Info=True;User ID=sa;Password=p@ssw0rd!";
public LoginForm()
{
InitializeComponent();
}
/// <summary>
/// Cancle 버튼 클릭 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnCancle_Click(object sender, EventArgs e)
{
//Application.Exit();
Environment.Exit(0); // Environment에서 0은 트루, 1은 에러. C#에서 선호 함
}
/// <summary>
/// 로그인 처리 버튼 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnOk_Click(object sender, EventArgs e)
{
LoginProcess();
}
private void TxtUserID_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13) // 엔터
{
TxtPassword.Focus();
}
}
private void TxtPassword_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == (char)13)
{
LoginProcess();
}
}
private void LoginProcess()
{
throw new NotImplementedException();
}
}
}
strConnString 부분에서 패스워드가 *******모양으로 되잇을 텐데 지우고 여러분의 비밀번호를 입력해주세요!
이 작업은 정확한 IP주소,아이디, 패스워드만 있다면 언제든지 연결이 가능합니다!
using MetroFramework;
using MetroFramework.Forms;
using System;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Windows.Forms;
namespace BookRentalShop20
{
public partial class LoginForm : MetroForm
{
string strConnString = "Data Source=127.0.0.1;Initial Catalog=BookRentalshopDB;Persist Security Info=True;User ID=sa;Password=p@ssw0rd!";
public LoginForm()
{
InitializeComponent();
}
/// <summary>
/// Cancle 버튼 클릭 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnCancle_Click(object sender, EventArgs e)
{
//Application.Exit();
Environment.Exit(0); // Environment에서 0은 트루, 1은 에러. C#에서 선호 함
}
/// <summary>
/// 로그인 처리 버튼 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnOk_Click(object sender, EventArgs e)
{
LoginProcess();
}
private void TxtUserID_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13) // 엔터
{
TxtPassword.Focus();
}
}
private void TxtPassword_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == (char)13)
{
LoginProcess();
}
}
private void LoginProcess()
{
//throw new NotImplementedException();
if ( string.IsNullOrEmpty(TxtUserID.Text)|| string.IsNullOrEmpty(TxtPassword.Text))
{
MetroMessageBox.Show(this, "아이디 / 패스워드를 입력하세요!", "오류",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string strUserId = string.Empty;
//DB연결, SQL 인젝션 해킹을 방지하기 위해서 아래와 같이 복잡하게 사용
using (SqlConnection conn = new SqlConnection(strConnString))
{
conn.Open();
SqlCommand cmd = new SqlCommand(); //Sql 명령문을 입력 받는 타입
cmd.Connection = conn;
cmd.CommandText = "select userID from userTbl" + //쿼리문을 넣을 때 마지막 또는 처음에 꼭! 스페이스 넣어줘야함!
" Where userId = @userID" + //'admin' 과 @userID가 동일
" And Password = @password"; //'12345' 과 @password가 동일
//ID 설정
SqlParameter parmUserId = new SqlParameter("@userID", System.Data.SqlDbType.VarChar, 12);//id속성 글자수를 12로 지정했음
parmUserId.Value = TxtUserID.Text;
cmd.Parameters.Add(parmUserId);
//Password 설정
SqlParameter parmPassword = new SqlParameter("@password", System.Data.SqlDbType.VarChar, 20);//password속성 글자수를 20로 지정했음
parmPassword.Value = TxtPassword.Text;
cmd.Parameters.Add(parmPassword);
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
strUserId = reader["userID"].ToString(); //"userID"는 sql문의 userID 필드값이다.
MetroMessageBox.Show(this, "접속성공", "로그인");//Debuging할때 사용
Debug.WriteLine("On the Debug");
}
}
}
}
위와 같은 코드로 작성하였습니다.
이상 포스팅을 마치겠습니다~!
Hasta Luego~!
'C# Winform' 카테고리의 다른 글
C# Winform 강의 6일차 (0) | 2020.06.22 |
---|---|
C# Winform 강의 5일차 (0) | 2020.06.19 |
C# Winform 강의 3일차 (0) | 2020.06.17 |
C# Winform 강의 2일차 (0) | 2020.06.16 |
C# Winform 강의 1일차 (0) | 2020.06.15 |