2017-11-23 7 views
1

내 창에서 사용자를 사이트에 로그인하는 단추를 설정합니다. 버튼을 클릭하면 label.Content = "logging in..." 을 변경 한 다음 셀렌을 사용하여 크롬 드라이버를 열고 사이트에 로그인 한 후 중지합니다. 문제는 레이블이 다음 방법이 완료 될 때까지 변경되지 않는다는 것입니다. 하지만 다음 방법을 통해 성공 또는 실패에 대한 레이블 변경이 기본적으로 발생하므로 기본적으로 UI에 레이블이 표시되지 않습니다.다음 메서드가 완료 될 때까지 레이블이 변경되지 않습니다.

내 로그인이 UI와 동일한 스레드에서 작동하므로 UI ​​로깅 시간에 사용할 수 없다는 점을 고려하십시오. 하지만 프로그램이이 상태가되기 전에 제 라벨이 바뀌어야했습니다.

또한 실행하기 전에 메서드에 레이블을 넣거나 시도 할 레이블을 설정할 때까지 기다리는 동안 Thread.Sleep(2000);을 추가했습니다. 일하지 않았어.

그리고 sendusername()의 스레드를 변경하려고 시도했지만 레이블 변경이 발생했지만 로그인과 암호가 올바르게 전송되지 않았습니다.

그 이유가 무엇이라고 생각하십니까? 방법 내부의 모든 코드가 실행될 때까지

public void BtnSubmit_OnClick(object sender, RoutedEventArgs e) 
{ 
    if (TxtUsername.Text.Length<3 || TxtPassword.Text.Length<3) 
    { 
     MessageBox.Show("You need to fill both boxes!"); 
    } 
    else if (!TxtUsername.Text.Contains("@")) 
    { 
     MessageBox.Show("You need to add valiable e-mail adress"); 
    } 
    else 
    { 
     LblLogin.Content = "Logging in..."; // changes label content 
     sendUsername(); // opens chromedriver and logs us into the website 
     ((MainWindow)Application.Current.MainWindow).tradeUrl = tradeUrl; 
     ((MainWindow) Application.Current.MainWindow).username = username; 
     ((MainWindow) Application.Current.MainWindow).login = TxtUsername.Text; 
     ((MainWindow)Application.Current.MainWindow).password = TxtPassword.Text; 
    } 
} 
+0

Stack Overflow에서 질문 한 사항 중 하나에 대한 답을 수락하지 않은 것으로 나타났습니다. https://stackoverflow.com/help/someone-answers를 읽어보십시오. 귀하가 직접 질문에 답변을해도 귀하가 게시 한 답변을 수락해야합니다. 그러면 문제가 해결 되었음이 분명하게 표시됩니다. –

+0

전혀 답이없는 높은 비율의 질문은 질문을하는 습관을 개선하는 데 시간을 할애해야한다는 것을 암시합니다. 여기에 있지 말아야 할 질문을하지 않고 묻는 질문이 잘 나타나는지 확인하는 것을 포함합니다. 자세한 내용은 [ask] 및 기타 링크 (https://stackoverflow.com/help/asking)를 참조하십시오. –

답변

4

당신의 BtnSubmit_OnClick()는 실제로 실시간 아니다, 응답을 반환하지 않습니다.

(1) 방법이 응답을 반환 끝날 때까지 (2) 아니면 그냥 옵션 # 자바 스크립트

를 통해 라벨의 콘텐츠를 업데이트 할 수 있습니다 기다릴 필요가 없습니다 비동기 있도록 sendUserName을 실행할 수 있습니다 2에서 OnClientClick 특성을 사용하여 레이블 텍스트를 업데이트 할 수 있습니다.

<asp:Button ID="Button1" runat="server" OnClientClick="updateLabel();" OnClick="Button1_Click" Text="Button" /> 
+0

첫 번째 방법은이 방법이 텍스트 상자에서 데이터를 전송하기 때문에 다른 기능이 작동을 멈추게하기 때문에 여기서는 수행하지 않습니다. 두 번째 방법은 내가 생각하기에 효과가있다. 그러나 나는 그것을 빨리하고 나중에 게시 할 방법을 배워야합니다. –

+0

그럴 경우 버튼의 OnClientClick 속성을 사용할 수 있으며 거기에서 호출 할 Javascript 함수를 지정할 수 있습니다. –

+0

OnClientClick을 사용하기위한 샘플 코드를 추가했습니다. –