2017-11-06 1 views
0
I 사용자가 등 OS/언어 /로, 컴퓨터의 구성을 많이 만들 수 있도록 응용 프로그램을 developp하려고

에 사용자 지정 속성/속성을 나는 것 추가 선택 나의 GUI에서 사용자 정의 속성 버튼C 번호 -</p> <p>그가 구성의 유효성을 검사 할 때 ... 새로운 버튼

private void VALIDATE_Click(object sender, EventArgs e) 
      { 

       string Computer = Text_Computer.Text; 
       if (myList.Any(str => str.Contains(Computer))) 
       { 
        MessageBox.Show(Computer+"Already Exist"); 
       } 
       else 
       { 
        Button button = new Button(); 
        button.Size = new System.Drawing.Size(195, 30); 
        button.Tag = Computer; 
        button.Name = Computer; 
        button.Text = Computer; 
        button.CustomOS = comboBox_OS.SelectedItem; 
        button.CustomLanguage = comboBox_Language.SelectedItem; 
        flowLayoutPanel3.Controls.Add(button); 
        myList.Add(Computer); 
        MessageBox.Show(Computer + "added"); 
       } 

에 저장처럼 사용자가 구성을 편집 할 경우, 그 구성을 나타내는 새로운 버튼을 클릭하고 모든 선택처럼 돌아 :

comboBox_OS.SelectedItem = button.CustomOS; 
comboBox_Language.SelectedItem = button.CustomLanguage; 

button.CustomOS 및 button.CustomLanguage와 같은 사용자 정의 속성을 만들 수 있습니까?

감사합니다.

+1

당신은 정기적으로 일을 상속 자신의 버튼을 만들 수 있으며, 당신은 당신의 뷰와 모델을 분리해야 ... 그것은 당신이 원하는대로 속성 –

+0

를 추가합니다. 데이터를 포함하는 버튼 자체 대신 데이터를 나타내는 클래스가 있어야하며 버튼이 해당 클래스에서 필요한 정보를 읽도록하십시오. –

답변

1

가능하고 매우 쉽습니다. 원래 버튼에서 새 클래스를 파생시키고 두 개의 새 속성을 선언합니다. 간단한 예제에 코드를 포함 시켰습니다.

using System; 
using System.Windows.Forms; 

namespace StackOverflow 
{ 
    public partial class FormMain : Form 
    { 
     public FormMain() 
     { 
      InitializeComponent(); 
     } 

     private void cbOS_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      //Save selection. 
      ComboBox cb = (ComboBox)(sender); 
      btn1.CustomOS = cb.SelectedItem.ToString(); 
     } 

     private void btnSelect_Click(object sender, EventArgs e) 
     { 
      //Restore selection on click. 
      MyButton btn = (MyButton)(sender); 
      cbOS.SelectedItem = btn.CustomOS; 
     } 

     //Declare a new class deriving from the original Button. 
     public class MyButton : Button 
     { 
      public String CustomOS { get; set; }  
      public String CustomLanguage { get; set; } 
     } 
    } 
} 
+0

고맙습니다 ThymiosK, 새로운 속성을 만드는 데는 문제가 없지만 데이터를 복원하는 데 문제가 있습니다. 새로운 새로운 버튼을 클릭했지만 아무 것도 일어나지 않습니다. 버튼이 아직 생성되지 않은 경우 click_event를 관리하는 방법은 무엇입니까? – twenty94470

+0

신속하게 답변 : "btn.Click + = new System.EventHandler (btn_Click);" 그리고 그것은 완벽합니다, 다시 많은 감사드립니다 :) – twenty94470

+0

당신이 그것을 다행으로 기쁘게 생각합니다. 비록 어떤 종류의 데이터베이스로 작업하는 것이 좋습니다. 예 : SQL. 컨트롤에 정보를 저장하는 것은 임시 솔루션입니다. – ThymiosK

관련 문제