2016-08-23 6 views
1

현재 C#의 Windows 양식 응용 프로그램을 작성 중이며 실행간에 데이터를 보존하는 방법이 궁금합니다. 내 응용 프로그램은 사용자 정의 컨트롤을 동적으로 만드는 버튼이있는 빈 폼으로 시작합니다. 각 컨트롤은 동적으로 텍스트 상자 (그림 목록)를 포함합니다. 사용자는이 텍스트 상자에 글을 쓰거나 동적으로 삭제할 수 있습니다.C# Windows Forms - 동적으로 생성 된 객체에 데이터 보존

나는 모든 응용 프로그램을 만들었으며 객체 수를 만들 수 있지만 닫고 다시 열 때 데이터를 저장할 수있는 방법이 궁금합니다. VS 2015에 있습니다.

많은 감사드립니다!

+1

[serialization] (https://msdn.microsoft.com/en-us/library/mt656716.aspx)을보십시오 – hankide

+1

데이터를로드해야합니다 (모델 또는 데이터 클래스가 있습니까?). 사용자가 아무 것도 변경하면 데이터를 시작, 업데이트 및 저장합니다. 저장 메커니즘은 무엇이든, 데이터베이스, 파일이 될 수 있습니다. – Maarten

+0

@hankide 당신은 직렬화 할 것이 있다고 가정합니다. 사용자 정의 컨트롤이나 텍스트 상자는 직렬화 할 수 없습니다. – Maarten

답변

1

이 경우 텍스트 상자 목록을 만들고 값을으로 직렬화 한 다음 몇 가지 형식으로 저장하면 xml이라고 가정 해 보겠습니다. 전체 목록을 직렬화 한 다음 간단한 코드로로드 할 수 있습니다.

편집 : Maarten은 좋은 지적을했습니다. 전체 구성 요소를 직렬화 할 수 없다는 점을 잊어 버렸습니다. 동적으로 텍스트 상자를 추가한다고 가정하고 있으므로 이미 값 목록을 가지고 있습니다.

+0

텍스트 상자 목록이 아닌 텍스트 상자 *의 값 목록을 만들 경우이 방법이 유용합니다. – Maarten

+1

@Maarten은 어디에서 얻었습니까? 자신의 클래스도 직렬화 할 수 있습니다. –

+0

[System.Windows.Forms.Control] (https://msdn.microsoft.com/en-us/library/system.windows.forms.control (v = vs.110) .aspx) 또는 [System.Windows.Forms.TextBox] (https://msdn.microsoft.com/en-us/library/system.windows.forms.textbox (v = vs.110) .aspx) ISerializable' 또는'[Serializable]'속성으로 표시된다. 또한 [이 질문] (http://stackoverflow.com/questions/3597472/marking-a-winforms-button-as-serializable)을 참조하십시오. WinForms UI 개체를 serialize 할 수 없습니다. – Maarten

1

기본적으로 두 가지 옵션이 있습니다.

  1. 파일에 저장하십시오.
  2. DB에 저장.

환경, 권한 등에 따라 웹 서비스를 호출하고 상태 정보를 피드에 제공 할 수 있습니다. 그런 다음 다시 실행하면 다시 읽을 수 있습니다.

좋은 옵션이라면 로컬 파일을 정보와 함께 저장 한 다음 읽을 수 있습니다. 데이터의 교환 가능성이 어려워지고 액세스 권한 문제가 발생할 수 있습니다.

저장해야하는 금액 정보가 상당히 제한된 경우 레지스트리에 몇 개의 키를 쓸 수 있습니다. 정보는 여전히 로컬 일 것이고 액세스 권한이 부여되어야하지만,이를 제외하고는 데이터를 꽤 잘 분류 할 수 있습니다.