반응형
3rd - party - company
https://www.telerik.com/products/winforms.aspx
https://www.devexpress.com/support/demos/
https://www.jetbrains.com/ko-kr/resharper/download/download-thanks.html?code=RSU&platform=windows
위의 사이트에서 이쁘게 만들수 있다. 근대 비싸
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 ChartControlApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "Using Chart Control";
// 10명의 학생 랜덤 점수 생성 및 차트 바인딩
Random random = new Random();
chart1.Titles.Add("중간고사 성적");
for (int i = 0; i < 10; i++)
{
chart1.Series["Score"].Points.Add(random.Next(10, 100));
}
chart1.Series["Score"].LegendText = "수학점수";
chart1.Series["Score"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
}
}
}
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 random = new Random();
chart1.Titles.Add("중간고사 성적");
for (int i = 0; i < 10; i++)
{
int valure = random.Next(10, 100);
chart1.Series["Score"].Points.Add(valure);
chart1.Series["Score"].ToolTip = valure.ToString();
}
chart1.Series["Score"].LegendText = "수학점수";
chart1.Series["Score"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
chart1.Series["Score"].ToolTip = "테스트";
} // 로직을 이해하면 된다 !!!!!!!! 제발 ㅡㅡ
private void button1_Click(object sender, EventArgs e)
{
chart1.Series["Score"].Points.Clear();
MessageBox.Show("데이터를 지웠습니다.", "처리", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
dll -> 윈 폼 땡하고 만들어주는 아주 좋은 친구
참조-> 참조 추가 -> 어셈블리에서 system.web.forms 이것만 찾으면 됨
서드 파티 컴퍼니에서 제공하는 프리 누겟 페키지
클리어 버튼을 눌렀을때 만약 메트로가 적용 안된다면 MessageBox 앞에 일단 Metro를 붙여본다 오류가 날꺼다
이경우 alt + enter 를 눌러서 using 을 생성해주고 누구의 명령어인지 this를 넣어주면 실행된다 개짱난다 그냥 외우자
sdi
mdi
중요!!! 디비 연결하는 방법
namespace BookRentalShop20
{
public partial class LoginForm :MetroForm
{
public LoginForm()
{
InitializeComponent();
}
/// <summary>
/// 캔슬버튼 클릭이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//Application.Exit(); //단점이 있다 정확하게 해제가 안되는 경우가 있다.
Environment.Exit(0); // 0 false 에러가 없다 -> 정상적인 종료 1 true 에러가 있다.
}
/// <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 ==13) //엔터
{
TxtPassword.Focus();
}
}
private void TxtPassword_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == 13)
{
LoginProcess();
}
}
private void LoginProcess()
{
throw new NotImplementedException(); //throw 예외 처리 구현이 안된 에러처리
}
}
}
namespace BookRentalShop20
{
public partial class MainForm : MetroForm
{
public MainForm()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
LoginForm loginForm = new LoginForm();
loginForm.ShowDialog();
}
}
}
서버탐색기를 통해서 디비 데이터를 연결!
원하는 디비 데이터 이름를 선택
namespace BookRentalShop20
{
public partial class LoginForm :MetroForm
{
string strConnString = "";
public LoginForm()
{
InitializeComponent();
}
/// <summary>
/// 캔슬버튼 클릭이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//Application.Exit(); //단점이 있다 정확하게 해제가 안되는 경우가 있다.
Environment.Exit(0); // 0 false 에러가 없다 -> 정상적인 종료 1 true 에러가 있다.
}
/// <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 ==13) //엔터
{
TxtPassword.Focus();
}
}
private void TxtPassword_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == 13)
{
LoginProcess();
}
}
private void LoginProcess() //기본적이 널 값 처리
{
//throw new NotImplementedException(); //throw 예외 처리 구현이 안된 에러처리
if ((TxtUserID.Text == null || TxtUserID.Text == "") || (TxtPassword.Text == null || TxtPassword.Text == ""))
{
MetroMessageBox.Show(this, "아이디/패스워드를 입력하세요!", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
}
}
namespace BookRentalShop20
{
public partial class LoginForm :MetroForm
{
string strConnString = "Data Source=192.168.0.28;Initial Catalog=BookRentalshopDB;Persist Security Info=True;User ID=sa;Password=p@ssw0rd!";
public LoginForm()
{
InitializeComponent();
}
/// <summary>
/// 캔슬버튼 클릭이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//Application.Exit(); //단점이 있다 정확하게 해제가 안되는 경우가 있다.
Environment.Exit(0); // 0 false 에러가 없다 -> 정상적인 종료 1 true 에러가 있다.
}
/// <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 ==13) //엔터
{
TxtPassword.Focus();
}
}
private void TxtPassword_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == 13)
{
LoginProcess();
}
}
private void LoginProcess() //기본적이 널 값 처리
{
//throw new NotImplementedException(); //throw 예외 처리 구현이 안된 에러처리
if ((string.IsNullOrEmpty(TxtUserID.Text) ) || (string.IsNullOrEmpty(TxtPassword.Text) )) // 이즈널 오아 엠티로 간단하게 변경
{
MetroMessageBox.Show(this, "아이디/패스워드를 입력하세요!", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
using (SqlConnection conn = new SqlConnection(strConnString)) //ip 보면 서울에 있는지 대구에 있는지 알수 있다. 접속할려면 아이디 페스워드
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT userID FROM userTBL" +
"WHERE userID = '@userID' " + //SQL구문을 가져 와서 넣는다.
" AND password = '12345'"; //사용자가 사용 하면 바로 진행되는 !
//////////////////////////////////////////////////////////////////// ID
SqlParameter parmUserId = new SqlParameter("@userID", SqlDbType.VarChar, 12); //CommandText 를 파라미터
parmUserId.Value = TxtUserID.Text;
cmd.Parameters.Add(parmUserId);
///////////////////////////////////////////////////////////////// PASSWORD
SqlParameter parPassword = new SqlParameter("@password", SqlDbType.VarChar, 12); //CommandText 를 파라미터
parPassword.Value = TxtPassword.Text;
cmd.Parameters.Add(parPassword);
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
Debug.WriteLine("On the Debug");
}
}
}
}
namespace BookRentalShop20
{
public partial class LoginForm :MetroForm
{
string strConnString = "Data Source=192.168.0.28;Initial Catalog=BookRentalshopDB;Persist Security Info=True;User ID=sa;Password=p@ssw0rd!";
public LoginForm()
{
InitializeComponent();
}
/// <summary>
/// 캔슬버튼 클릭이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//Application.Exit(); //단점이 있다 정확하게 해제가 안되는 경우가 있다.
Environment.Exit(0); // 0 false 에러가 없다 -> 정상적인 종료 1 true 에러가 있다.
}
/// <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 ==13) //엔터
{
TxtPassword.Focus();
}
}
private void TxtPassword_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == 13)
{
LoginProcess();
}
}
private void LoginProcess() //기본적이 널 값 처리
{
//throw new NotImplementedException(); //throw 예외 처리 구현이 안된 에러처리
if ((string.IsNullOrEmpty(TxtUserID.Text) ) || (string.IsNullOrEmpty(TxtPassword.Text) )) // 이즈널 오아 엠티로 간단하게 변경
{
MetroMessageBox.Show(this, "아이디/패스워드를 입력하세요!", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string strUserId = string.Empty;
using (SqlConnection conn = new SqlConnection(strConnString)) //ip 보면 서울에 있는지 대구에 있는지 알수 있다. 접속할려면 아이디 페스워드
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT userID FROM userTBL " + //SQL 구문을 가져 와서 넣을 때는 꼭 구문 사이사이를 띄워줘야 한다.
" WHERE userID = @userID " + //SQL구문을 가져 와서 넣는다.
" AND password = @password"; //사용자가 사용 하면 바로 진행되는 !
//////////////////////////////////////////////////////////////////// ID
SqlParameter parmUserId = new SqlParameter("@userID", SqlDbType.VarChar, 12); //CommandText 를 파라미터
parmUserId.Value = TxtUserID.Text;
cmd.Parameters.Add(parmUserId);
///////////////////////////////////////////////////////////////// PASSWORD
SqlParameter parPassword = new SqlParameter("@password", SqlDbType.VarChar, 12); //CommandText 를 파라미터
parPassword.Value = TxtPassword.Text;
cmd.Parameters.Add(parPassword);
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
strUserId = reader["userID"].ToString();
MetroMessageBox.Show(this, "접속성공", " 로그인");
Debug.WriteLine("On the Debug");
}
}
}
}
반응형