c# 윈폼 체크박스 저장에 대해 질문있습니다.
글쓴이: fkqpfwl121 / 작성시간: 일, 2015/11/22 - 11:13오전
프로그램을 실행시켰을때 5개의 checkbox중에서 한 3개정도의 checkbox의 체크상태를 표시하고 enable = false값으로 설정하고, 파일스트림에 저장을 하고
나면 파일스트림에 checkbox의 번호와 checkbox가 enable=false 상태로 남게하고, 프로그램을 다시 켰을때 앞에서 체크표시한 체크박스들의 값이
enable=false로 되어서 체크를 하지못하도록 구성된것을 보고싶은데 파일스트림으로 checkbox의 값을 체크할때 파일스트림으로 써서 메모장에 남기는법은
알겠는데 이걸 파일스트림으로 읽어서 체크표시가 enable로 되어있는 부분을 어떻게 표시할지가 참 막막합니다.
방법이 있나요?
Forums:
참고해보세요.
http://rintiantta.blog.me/40114697344
sw.Close();
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040102&docId=232585617&qb=U3RyZWFtV3JpdGVy&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0
sw.WriteLine(newname + "%" + newwriter + "%" + newday);
http://aspdotnet.tistory.com/1043
EUC-KR 한글은 이렇게 사용
using ( StreamWriter file = new StreamWriter(@"d:\abc.txt", true, System.Text.Encoding.GetEncoding("EUC-KR") ) )
{
}
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
흠...
지금 현재 체크박스의 버튼을 몇개 누르고 예매 버튼을 눌렀고, 그렇게 했을떄
아래의 소스대로 abcd.txt라는곳에 체크박스x : true or false 형식으로 파일에 쓰여지긴 합니다.
그런데 이것을 파일을 읽어들인 다음에, 또다시 실행을 시켜봤을때 체크박스의 상태가 true로 되어있는곳을 사진처럼 클릭하지 못하도록 enable이 유지되도록
데이터를 남겨놓고 싶은데 파일을 읽어들일때 따로 설정을 해주어야 하는건지 아니면 이렇게 유지시킬수는 없는지 궁금합니다.
바로 아래는 지금 현재 제가 그림의 파일들을 만들었던 소스파일입니다.
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;
using System.IO;
namespace WindowsFormsApplication999
{
public partial class Form1 : Form
{
CheckBox[] boxes = new CheckBox[5];
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click_1(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
boxes[i] = new CheckBox();
boxes[i].Checked = true;
}
CheckBox[] count = new CheckBox[5];
for (int j = 0; j < 5; j++)
{
count[j] = new CheckBox();
}
count[0] = checkBox1; count[1] = checkBox2; count[2] = checkBox3;
count[3] = checkBox4; count[4] = checkBox5;
for (int z = 0; z < 5; z++)
{
if (boxes[z].Checked == count[z].Checked)
{
count[z].Enabled = false;
using (StreamWriter writer = new StreamWriter("abcd.txt"))
{
writer.WriteLine("체크박스1 : " + checkBox1.Checked);
writer.WriteLine("체크박스2 : " + checkBox2.Checked);
writer.WriteLine("체크박스3 : " + checkBox3.Checked);
writer.WriteLine("체크박스4 : " + checkBox4.Checked);
writer.WriteLine("체크박스5 : " + checkBox5.Checked);
// file_write.flush();
// file_write.Close();
}
}
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click_1(object sender, EventArgs e)
{
this.Close();
}
}
}
가능합니다.
파일에서 읽어들인 값을 비교
이런 방식으로 구현해보세요. 저도 ㅇ_ㅇ;; 해봐야 알거 같습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
파일 쓰기부분같은 경우에는 for문에서 if문에
파일 쓰기부분같은 경우에는 for문에서 if문에 조건이 맞다면 enable = false 부분 바로 아래다가
파일을 쓰면되는데 파일 읽기같은 경우에는
어느 부분에다 써야하며.. 써주신 코드의 윗부분을 이해를 잘 하지 못하겠습니다.
현재 텍스트에는 체크박스의 5개 중에서 1,2,3,4를 체크해주어 아래처럼 true로 저장이 되어 있습니다.
체크박스1 : True
체크박스2 : True
체크박스3 : True
체크박스4 : True
체크박스5 : False
string[] values = currentline.Split(new char[]{' ', ':'}); // : 구분자로 문자열을 분리
textbox1.Text = value[0];
textbox2.Text = value[1];
textbox3.Text = value[2];
textbox4.Text = value[3];
써주신 바로 위의 코드는 spilt로 :의 앞과 뒤로 나누고 values에 차례대로 저장한다 라는 뜻으로 알고있습니다.
그리고 아래는 제가 써주신 코드를 이해해본 소스입니다.
textbox1.text에는 value[0]에 들어있는 체크박스1
textbox2.text 에는 value[1]에 들어있는 체크박스1 : 의 오른편의 값인 true
textbox3.text에는 value[2]에 들어있는 체크박스2
textbox4.text에는 value[3]에 들어있는 체크박스2 : 의 오른편의 값인 true..
만약 이게 맞다면
textbox1.text에는 체크박스1
textbox2.text에는 true
textbox3.text에는 체크박스2
textbox4.text에는 true
이런 방식으로 쭈루룩 이어져야 하는데..
어찌된 영문인지 텍스트박스에 저렇게 나옵니다 ..
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ....
아래에는 소스의 전문을 한번 써봤습니다 ㅠㅠ
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;
using System.IO;
namespace WindowsFormsApplication999
{
public partial class Form1 : Form
{
CheckBox[] boxes = new CheckBox[5];
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click_1(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
boxes[i] = new CheckBox();
boxes[i].Checked = true;
}
CheckBox[] count = new CheckBox[5];
for (int j = 0; j < 5; j++)
{
count[j] = new CheckBox();
}
count[0] = checkBox1; count[1] = checkBox2; count[2] = checkBox3;
count[3] = checkBox4; count[4] = checkBox5;
for (int z = 0; z < 5; z++)
{
if (boxes[z].Checked == count[z].Checked)
{
count[z].Enabled = false;
if (!File.Exists("abcd.txt"))
{
using (StreamWriter prime = new StreamWriter("abcd.txt"))
{
prime.WriteLine("체크박스1 : " + checkBox1.Checked);
prime.WriteLine("체크박스2 : " + checkBox2.Checked);
prime.WriteLine("체크박스3 : " + checkBox3.Checked);
prime.WriteLine("체크박스4 : " + checkBox4.Checked);
prime.WriteLine("체크박스5 : " + checkBox5.Checked);
prime.Close();
}
}
else
{
using (StreamReader file_read = new StreamReader("abcd.txt"))
{
//체크박스1
string currentline = file_read.ReadLine(); //한줄씩 읽기
string[] values = currentline.Split(new char[] { ' ', ':' }); // : 구분자로 문자열을 분리
textBox1.Text = values[0];
textBox2.Text = values[1];
textBox3.Text = values[2];
textBox4.Text = values[3];
}
}
}
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click_1(object sender, EventArgs e)
{
this.Close();
}
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
}
private void textBox5_TextChanged(object sender, EventArgs e)
{
}
}
}
for문. 코드 모두 빼고 하나씩 먼저 해보세요.
새로 프로젝트를 만들어서. 구현해보세요.
- 저장
- 읽기
- 비교
- 체크박스 표시
그 후에. for문으로 만들어도 될겁니다.
C# 책에 있는 예제소스를 참고하시는것이 좋습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
감사합니다
감사합니다
댓글 달기