C# 문자열 랜덤 생성 프로그램
글. 오상문 sualchi@daum.net
(1) 비주얼 스튜디오에서 C# 폼 프로젝트를 만듭니다.
(2) 다음과 같은 컨트롤을 폼에 배치합니다.
-체크상자 4개 : cbLowercase, cbUppercase, cbNumbers, cbSpecial
-레이블1개 : label1
-텍스트상자 2개 : txtLength, strBox
-단추 2개 : btnNew, btnExit
컨트롤의 텍스트 속성이나 배치 등은 화면을 참고하세요.
(3) 만들기, 종료 버튼을 더블클릭하여 코드를 작성하고,
다른 추가 부분도 아래 소스를 참고하여 작성합니다.
//
// C# Random String Generator V1.0
// Visual Studio 2015
// 2018.07.11 by Sangmun Oh
//
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace random_string
{
public partial class Form1 : Form
{
private const string CapitilizedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private const string NonCapitilizedLetters = "abcdefghijklmnopqrstuvwxyz";
private const string Numbers = "0123456789z";
private const string SpecialCharacters = "!@#$%^*";
private static Random random = new Random();
public Form1()
{
InitializeComponent();
}
private void New_Click(object sender, EventArgs e)
{
List<string> charSets = new List<string>();
if (cbLowercase.Checked)
charSets.Add(NonCapitilizedLetters);
if (cbUppercase.Checked)
charSets.Add(CapitilizedLetters);
if (cbNumbers.Checked)
charSets.Add(Numbers);
if (cbSpecial.Checked)
charSets.Add(SpecialCharacters);
if (charSets.Count > 0)
{
int length;
bool canConvert;
canConvert = int.TryParse(txtLength.Text, out length);
// length = int.Parse(txtLength.Text); // 포맷 에러 가능성
if (canConvert == false || length <= 0)
{
MessageBox.Show("글자 수는 0보다 큰 정수입니다.");
return;
}
StringBuilder sb = new StringBuilder();
while (length-- > 0)
{
int charSet = random.Next(charSets.Count);
int index = random.Next(charSets[charSet].Length);
sb.Append(charSets[charSet][index]);
}
strBox.Text = sb.ToString();
} else
MessageBox.Show("문자 종류를 하나 이상 체크하세요.");
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
(4) 실행 화면입니다.
<이상>
'C#, Unity' 카테고리의 다른 글
C# 키 코드 확인 예제 (0) | 2018.07.12 |
---|---|
C# 로그인 창으로 접속하는 예제 (0) | 2018.07.11 |
C# String과 string 차이? (0) | 2018.07.11 |
C# 동적으로 단추 생성하기 (0) | 2018.07.09 |
C#, 로또 출력 윈도우 폼 예제 (0) | 2018.07.08 |