여러 콤보 상자를 항목으로 채우는 ac # 함수를 작성 중입니다. 그러나 객체 / 필드 이름을 함수에 전달할 수 없으며 실제로 손으로 할 수 있습니다.
첫 번째 변수는 쿼리 문자열이고 두 번째 변수는 XAML 개체입니다.
SetupComboBoxes(
"SELECT Machine FROM Machines GROUP BY Machine ORDER BY Machine",
txtMachine);
호출되는 코드는 다음과 같을 것입니다.
private void SetupComboBoxes(string strQuery, object objFieldName)
{
MySqlCommand cmd;
MySqlDataReader dr;
cmd = new MySqlCommand(strQuery, con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
objFieldName.Items.Add(dr[0].ToString());
}
}
어떤 제안이라도 대단히 감사하겠습니다.
문제는 메서드를 선언 한 방식입니다.
private void SetupComboBoxes(string strQuery, object objFieldName)
컴파일러에게 두 번째 매개 변수가 object
. object
에 Items
나중에 사용하려는 속성이 없습니다 . 컴파일러는 그렇게 할 수 없습니다. 왜냐하면 여러분이 말한 한 모든 종류의 객체를 여러분의 메서드에 전달할 수 있기 때문 입니다. 이들 중 대부분은 Items
방법 이 없으며 프로그램이 충돌합니다. 컴파일러는 코드에 형식 안전성 을 적용 하고 있습니다. 다른 소위 "동적"언어를 사용하면이를 수행 할 수 있으며 런타임에만 형식 안전성 검사를 수행 할 수 있지만 C #은 이러한 언어 중 하나가 아닙니다.
ComboBox
메서드 내부 에서 작업해야하는 경우 컴파일러에 매개 변수가 다음과 같음을 알려야합니다 ComboBox
.
private void SetupComboBoxes(string strQuery, ComboBox objFieldName)
이렇게 ComboBox
하면 메서드 의 모든 속성에 액세스 할 수 있으며, .NET Framework가 아닌 것에 실수로 해당 메서드를 사용하려고 시도하는 것을 방지 할 수 있습니다 ComboBox
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다