2011-02-17 4 views
2

C#에서 wpf를 사용하고 있습니다.이전 세부 사항으로 양식을 작성하고 양식을 정리하는 방법을 찾으십니까?

질문 1 : wpf 창을 만들었습니다. 버튼 클릭 이벤트를 통해 이전 사용자가 입력 한 필드를로드 할 수 있습니까?

질문 2 : 폼의 필드를로드 한 후에 폼의 모든 필드를 지우는 지우기 단추를 만들고 싶습니다. 이것을 달성 할 수있는 방법이 있습니까?

감사합니다.

EDIT 1

나는 현재까지 읽으려고, XML 직렬화와 함께 고군분투하지만 난 여전히 꽤 손실입니다. 내가 새로운 클래스를 만들려고한다는 것을 알면 내 응용 프로그램에 "저장"버튼과 "로드"버튼이 있습니다. 몇 가지 콤보 상자가 있는데, 각각 하나의 XML 파일로 이미 채워져 있습니다. 또한 텍스트 상자, 채울 수있는 확인란이 있습니다. 따라서 일단 사용자가 양식을 입력하면 양식 항목을 "저장"하고 원하는 경우 언제든지 "로드"할 수 있습니다. 나는 또한 탐구하고 일부 디렉토리에있는 오래된 형태의 복사본을 저장하지만 지금 난 단지 내 코드에서 이것을 가지고 사용자의 탐험가 열립니다 filebrowserdialog을 공부 :

private void SaveButton_Click(object sender, RoutedEventArgs e) 
    { 
     var dialog = new System.Windows.Forms.FolderBrowserDialog(); 
     System.Windows.Forms.DialogResult result = dialog.ShowDialog(); 

    } 

이 무엇 거리가 멀다 전 지금 요구하십시오.

나는 콤보 상자 값을위한 새로운 클래스를 만드는 데 특히 분명한 부분을 잃어 버렸다고 생각한다. 가능한 한 나를 안내 해주십시오. 텍스트 상자와 콤보 상자 값에 대해서도 나를 안내 할 수 있다면 고맙겠습니다. 감사.

내가 콤보 상자를 채우는 방법이 있습니다 :

public void PopulateDDLFromXMLFile() 
     { 
      DataSet ds = new DataSet(); 
      ds.ReadXml("C:\\GUI\\buildermanageremail.xml"); 


      DataView dv = ds.Tables["builder"].DefaultView; 
      DataView dw = ds.Tables["manager"].DefaultView; 

      dv.Sort = "value"; 

      comboBox1.ItemsSource = dv; //Sets the collection of items from which to populate 
      comboBox2.ItemsSource = dw; 

      comboBox1.DisplayMemberPath = "value"; //Sets the path within an item to use for display 
      comboBox2.DisplayMemberPath = "value"; 
     } 

답변

0

예 확인은 가능 .. 당신은 데이터베이스 또는 임시 파일 (직렬화)에서 사용자 항목별로 저장하고 텍스트 상자에이를 표시 될 때를 폼을로드하십시오. 또는 언급 한대로 그 작업을 수행 할 수있는 버튼이 있습니다. Labels/TextBoxes 또는 Gridview에서 데이터베이스의 데이터를 폼에 표시 할 때 일반적으로하는 것과 비슷합니다.

하지만 작동 시키려면 먼저 사용자 항목을 저장해야합니다. 사용자가 데이터를 저장할 수있는 Button을 가질 수도 있고 컨트롤의 Texthange/LostFocus 이벤트에서 저장할 수도 있습니다.

데이터를 저장하지 않아도되는 경우 변수에 저장하고 응용 프로그램의 수명이 다할 때까지 메모리에 보관할 수 있습니다.

양식을 지우려면 샘플 코드가 다음과 같아야합니다.

foreach(Control ctl in this.Controls) 
{ 
    TextBox tbx = ctl as TextBox; 
    if(tbx != null) 
    { 
     tbx.Text = String.Empty; 
    } 
} 
+0

감사합니다. shekhar_pro. 연재 과정을 살펴볼 것입니다. – jeremychan

0

당신은 모델 객체에서 모든 데이터를 이동한다면, 당신은 단순히 저장하는 파일로 모델을 직렬화 할 수 있습니다 (이 층을 분리해서 할 MVVM을 사용) 모델의 속성에 모든 컨트롤을 바인딩하고 로드시 비 직렬화.

명확한 버튼은 모델의 새 인스턴스를 만들 수 있습니다.이 작업을 수행하기위한 최소한의 코드입니다.

관련 문제