2011-09-15 6 views
0

Windows Form 콤보 상자에서 선택한 옵션을 기반으로하는 if 문에서 결과를 표시하려고합니다. if stat이 자체 클래스 내에서 폼과 분리되어 있고 항상 else 값을 반환 할 때 문제가 발생합니다. 나는 콤보 박스를 공개했다. 내 코드는 다음과 같습니다. 콤보 상자에서 선택한 항목을 가져 오는콤보 상자에서 데이터를 검색 할 수 없습니다.

public void button1_Click(object sender, EventArgs e) 
{ 
    xRayData xRayData1 = new xRayData(); 
    string shiftChangeValue; 
    shiftChangeValue = xRayData1.shiftChange(); 
    label2.Text = shiftChangeValue; 
} 

public string shiftChange() 
{ 
    frmSWChange frmSWChange1 = new frmSWChange(); 

    string shiftLetter; 

    if (frmSWChange1.cbShift.Text == "Day") 
    { 
     shiftLetter = "D"; 
    } 
    else if (frmSWChange1.cbShift.Text == "Night") 
    { 
     shiftLetter = "N"; 
    } 
    else if (frmSWChange1.cbShift.Text == "Morning") 
    { 
     shiftLetter = "M"; 
    } 
    else 
    { 
     shiftLetter = "ERROR"; 
    } 


    return shiftLetter; 
} 

답변

1

사용 Selected...

frmSWChange1.cbShift.SelectedItem // gets the binded item 
frmSWChange1.cbShift.SelectedText // gets the display text of the selected item 
frmSWChange1.cbShift.SelectedValue // gets the value of the selected item 
+0

이봐 주석에 대한 감사, 내가 값을 변경하면 그러나 당신에게 나는 아직도 항상 오류 값 – fanle

+0

을 반환하고 디버그 할 수 .SelectedText하기 'SelectedText'에 저장된 내용을 살펴 보시겠습니까? 어쩌면 당신의 현은 다를 수 있습니다. – Samich

+0

실제로 "frmSWChange1"양식의 ShowDialog()를 수행합니까? frmSWChange의 생성자에서? "frmSWChange"양식을 선택한 값이있는 공용 속성을 포함하는 방식으로 디자인하는 것이 좋습니다. 그것은 디버깅, 양식 재사용 및 uncoupling 도움이 될 것입니다 -> 당신의 생활을 쉽게합니다. – fixagon

0

은 양식의 새로운 인스턴스를 생성하고이된다

frmSWChange frmSWChange1 = new frmSWChange(); 

당신의 방법이 라인에서보세요 하나는 선택과 관련이 없으며 콤보 상자에서 선택된 텍스트가 없습니다. 당신이 필요로하는 것은 이러한 선택이 이루어지는 양식의 현재 인스턴스에 대한 참조입니다.

0

frmSWChange.cs

namespace X_Ray 
{ 
public partial class frmSWChange : Form 
{ 

    public frmSWChange() 
    { 
     InitializeComponent(); 
     frmSWChange1 
    } 

    private void btnReturnToMainMenu_Click(object sender, EventArgs e) 
    { 
     new frmMainMenu().Show(); 
     this.Close(); 
    } 

    public void button1_Click(object sender, EventArgs e) 
    { 

     string shiftChangeValue; 
     label1.Text = mtxtScrapDate.Text; 
     derpderp1 = cbShift.SelectedText; 
     xRayData xRayData1 = new xRayData(); 

     shiftChangeValue = xRayData1.shiftChange(); 
     label2.Text = shiftChangeValue; 
    } 

} 
} 

xRayData.cs

namespace X_Ray 
{ 
class xRayData 
{ 
    #region Methods 


    public string shiftChange() 
    { 
     frmSWChange frmSWChange1 = new frmSWChange(); 

     string shiftLetter; 

     if (frmSWChange1.cbShift.SelectedText == "Day") 
     { 
      shiftLetter = "D"; 
     } 
     else if (frmSWChange1.cbShift.SelectedText == "Night") 
     { 
      shiftLetter = "N"; 
     } 
     else if (frmSWChange1.cbShift.SelectedText == "Morning") 
     { 
      shiftLetter = "M"; 
     } 
     else 
     { 
      shiftLetter = "ERROR"; 
     } 


     return shiftLetter; 
    } 

    #endregion 
} 
} 
+0

안녕하세요, 답변을 게시 해 주셔서 감사합니다 :) 그냥 모든 줄에 공백 들여 쓰기를 넣어 코드가 한 블록을 형성하는지 확인하십시오. 그러나 때로는 그것을 해독하는 것이 좋습니다. 그렇다면 설명을 해주십시오. 상단에 항상 설명이 있어야합니다. 당신이 릴 설명으로 그것을 편집한다면 그것은 약간의 upvotes를 얻을 것이다;) – sillyMunky

관련 문제