2011-08-15 2 views
1

나는 C# 형식 기반 응용 프로그램을 개발했습니다. 여러 개의 텍스트 상자와 몇 개의 라디오 버튼으로 구성됩니다. 이 애플리케이션 (예 : * .ct)의 고유 한 파일 형식을 만들고 싶다면 어떻게해야합니까? 내가 성취하고자하는 것은 사용자가 파일 저장에 갈 수 있도록하는 것입니다. 그러면 텍스트 상자와 선택한 라디오 버튼에 입력 한 정보가 될 * .ct 파일을 저장합니다. 파일 -> 열기를 선택하면 * .ct 파일을 열어 확인란을 채우고 선택한 라디오 단추를 선택할 수 있습니다. 만약 누군가가 코드를 볼 수있는 곳을 지적 해 주면 어디에서이 코드를 보았는가 등의 예제를 붙여 넣을 수있다.C# 창에 입력 저장 /로드?

감사합니다.

답변

2

파일을 XML로 저장하는 것이 좋습니다. xml 파일을 읽을 때 스키마의 유효성을 검사하여 응용 프로그램에서 읽을 수 있는지 확인하십시오.

Xml 파일은 정보 저장시 표준입니다. 또한 표준 형식을 사용하는 다른 응용 프로그램간에 응용 프로그램을 공동으로 사용할 수 있습니다. xml 파일은 무엇입니까?

0

파일 연결은 Windows에서 처리됩니다. 사용자는 특정 확장명을 가진 파일을 여는 데 사용되는 응용 프로그램의 유형을 알 수 있습니다.

귀하의 경우 * .ct를 귀하의 exe 파일에 연결하십시오. 그런 다음 전체 경로가 주 기능의 매개 변수로 제공됩니다. 따라서 확장자를 연결할 때 파일 인수를 처리해야합니다.

파일 열기 및 저장의 경우 파일 열기 및 저장 대화 상자를 표시하는 구성 요소가 있습니다. * .ct 만 표시하도록 구성 할 수 있습니다.

2

당신이 빨리하고 쉽게 원하는대로 보이는 파일의 내용을 Windows 폼 컨트롤에 매핑합니다.

그 경우는 다음 다양한 창문 양식의 상태를 나타내는 클래스 생성 보라 경우 - 문자열 속성에 살고있는 텍스트 상자에 내용을 작성했으면 등 부울 속성

으로 체크 박스를 선택 그 클래스를 사용하면 모든 Windows 폼 컨트롤에 대한 인스턴스를 데이터 바인딩 할 수 있습니다. 이는 Windows 폼 데이터 바인딩 프로세스가 UI와 클래스를 동기화 상태로 유지한다는 것을 의미합니다.

마지막 단계는 해당 데이터를 저장하고로드하는 것입니다. C# serialization에 대한 조사를 위해 파일 표현에 클래스를 작성하는 방법에 대한 자습서가 많이 있습니다. 여기서 수행해야하는 유일한 작업은 클래스에 몇 가지 특성을 적용하고 클래스에서 올바른 메서드를 호출하는 것입니다. 직렬화 네임 스페이스.


다음은 텍스트 상자 하나와 라디오 버튼 3 개가있는 예제 양식의 데이터 바인딩을 보여주는 매우 빠른 코드입니다. 실제 사례를 실험하여 백킹 클래스의 올바른 구현을 얻으십시오. 라디오 버튼과 라디오 버튼 그룹은 약간 까다로울 수 있습니다.

코드가 향상 될 수 있다고 확신하지만이 방법을 보여주기위한 것입니다.

public partial class Form2 : Form 
{ 
    private BindingClass backingClass; 

    public Form2() 
    { 
     InitializeComponent(); 

     backingClass = new BindingClass(); 
     backingClass.Name = "Hippo"; 
     backingClass.One = true; 

     textBox1.DataBindings.Add("Text", backingClass, "Name"); 

     radioButton1.DataBindings.Add("Checked", backingClass, "One"); 
     radioButton2.DataBindings.Add("Checked", backingClass, "Two"); 
     radioButton3.DataBindings.Add("Checked", backingClass, "Three"); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(backingClass.Name); 
     if (backingClass.One) 
     { 
      MessageBox.Show("One"); 
     } 
     if (backingClass.Two) 
     { 
      MessageBox.Show("Two"); 
     } 
     if (backingClass.Three) 
     { 
      MessageBox.Show("Three"); 
     } 
    } 
} 

public class BindingClass 
{ 
    private bool one; 
    private bool two; 
    private bool three; 

    public string Name { get; set; } 

    public bool One { 
     get { return one;} 
     set 
     { 

       one = value; 
       two = !value; 
       three = !value;   
     } 
    } 
    public bool Two 
    { 
     get { return two; } 
     set 
     { 

      two = value; 
      one = !value; 
      three = !value;  
     } 
    } 
    public bool Three 
    { 
     get { return three; } 
     set 
     { 

      three = value; 
      one = !value; 
      two = !value;  
     } 
    } 
} 

위의 BindingClass 인스턴스를 만들면 파일에서 클래스를 역 직렬화합니다.

이 접근법은 MVMS 접근 방식으로 접근합니다.보기 모델과 마찬가지로 바인딩을 지원하는 클래스가 사용됩니다. 바인딩 클래스에 논리가 포함되기를 원하지 않기 때문에이 사고 방식을 사용하는 것이 좋습니다. 실제로 바인딩 할 수있는 항목과 양식을 나타내는 직렬화 할 항목을 제공 할 수 있습니다. 실제 모델 인 개체를 포함하는 다른 논리가 있어야합니다.


필자는 직렬화를위한 코드를 보여주지 않겠다. 여기에는 온라인을위한 많은 예제가있다. 다음은 좋은 첫 번째 단계가되는 MSDN 기사에 대한 링크입니다. http://msdn.microsoft.com/en-us/library/ms950721.aspx

+0

안녕하세요 David - 네, 그게 내가하고 싶은 것입니다. 사용자가 textbox1에 'Hello'를 입력하면 textbox2에 'Test'하고 라디오 버튼 A (주어진 A 또는 B 선택)를 선택합니다. - 해당 정보를 파일에 저장하고 싶습니다. 응용 프로그램이 실행되면이 파일을로드하고 textbox1에 'Hello'등이 포함됩니다. –

관련 문제