C\#WPF 에서 경계선 없 는 로그 인 창 을 만 드 는 예제
하지만 드라마 한 차 트 의 한 마디 처럼 내 가 살아 남 았 으 니 헛되이 살 지 는 않 았 을 것 이다!필 자 는 아무리 발 버 둥 쳐 도 경험 과 교훈 을 나 눌 수 있 고 기억 에 남 을 때 정리 해서 썼 다.후발 주자 들 이 시행 착 오 를 줄 이 고 업무 효율 을 높이 기 를 바란다.만약 잘 쓰 지 못 한 부분 이 있다 면 독자 가 지적 하고 함께 진보 할 수 있 기 를 바 랍 니 다!
---------------------------------
오늘 은 로그 인 창 부터 말씀 드 리 겠 습 니 다.
1.효과 도
먼저 효과 도 를 살 펴 보 자.간결 하고 스타일 이 통일 되 어 Window 운영 체제 주제 에 전혀 영향 을 받 지 않 는 다.
2.실현 방법
WPF 에서 이러한 창 을 만 드 는 것 은 매우 간단 합 니 다.창 디자인 에 두 개의 속성 만 설정 해 야 합 니 다.하 나 는 AllowsTransparency 이 고 Ture 로 설정 합 니 다. 하 나 는 Window Style 이 고 None 으로 설정 되 어 있 습 니 다.
주:Window 의 속성 입 니 다.다른 컨트롤 을 선택 하지 마 십시오.
또한 AllowsTransparency="True"라면 WindowStyle 은 None 일 수 밖 에 없고 VS 2015 는 연동 설정 을 했 으 며 AllowsTransparency 를 선택 하면 다음 도 달라 집 니 다.그러나 VS 2008 은 사용자 가 각각 설정 해 야 합 니 다.그렇지 않 으 면 잘못 보고 할 수 있 습 니 다.
또 하나의 문 제 는 AllowsTransparency="True"이후 윈도 우즈 FormsHost 컨트롤 을 사용 할 수 없습니다.사용 하 더 라 도 WFH 의 모든 컨트롤 은 투명 해서 표시 할 수 없습니다.예 를 들 어 ReportViewer!
3.창 임의의 빈 공간 에서 마우스 드래그
제목 표시 줄 에 최소 화 와 닫 기 단 추 를 최대 화 합 니 다.로그 인 창 에 서 는 최대 화 단 추 를 사용 하지 않 습 니 다.그러나 제목 표시 줄 은 창 전 체 를 끌 어 당 길 수 있 는 실 용적 인 역할 이 있 습 니 다.사용 자 는 제목 표시 줄 을 누 르 기만 하면 데스크 톱 어디 든 끌 어 당 길 수 있 습 니 다.이제 제목 표시 줄 을 숨 긴 후에 어떻게 보완 해 야 합 니까?
창 에 추가 Mouse Left Button Down 의 이벤트,코드 는 다음 과 같 습 니 다.
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
try
{
this.DragMove();
}
catch { }
}
이렇게 하면 OK!주:인터넷 의 일부 예제 에 서 는 try{}catch{}을 사용 하지 않 고 코드 가 한 줄 밖 에 없습니다.
this.DragMove();
로그 인 창 에 몇 개의 컨트롤 과 이벤트 만 있다 면 큰 문제 가 없 을 것 입 니 다.여기 서 필 자 는 작은 경험 을 공유 해 야 한다.
메 인 화면 에서 도 이러한 제목 표시 줄 이 없 는 창 을 사 용 했 기 때문에 마우스 가 Gridview 에서 작 동 할 때 이상 한 붕 괴 를 일 으 킬 수 있 습 니 다.
그래서 필 자 는 더 하 는 게 좋 을 것 같 아 요. try..catch..이상 을 피하 세 요.로그 인 창 이라도 예외 가 아 닙 니 다.
4.비밀 번 호 를 입력 하고 Enter 를 눌 러 로그 인
많은 사이트 들 이 이러한 상황 에 주의 하고 비밀 번 호 를 입력 한 후에 차 로 돌아 가면 시스템 이 로그 인 할 수 있 는데 이것 이 바로 좋 은 사용자 체험 이다.물론 사용자 체험 에 주의 하지 않 는 사이트 도 있 습 니 다.사용 자 는 마 우 스 를 클릭 하여 로그 인 해 야 합 니 다)
사실 암호 상자 에 KeyDown 이 벤트 를 추가 하면 됩 니 다.
private void txt_Pwd_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Enter:
btn_login_Click(btn_login, null);
break;
default:
break;
}
}
So easy !5. Enter(Enter)를 누 르 면 다음 컨트롤 로 이동 합 니 다.
리 턴 로그 인 을 언급 하 는 김 에 어떤 사람들 은 사용자 이름 을 입력 하 는 것 을 좋아 하지 않 은 후에 마우스 로 비밀번호 상자 로 옮 기 고 키보드 와 마우스,예 를 들 어 필자 등 이다.
사실 Tab 키 는 사용자 가 비교적 간단 한 인터페이스 에서 마 우 스 를 벗 어 날 수 있 지만 창 디자인 시 컨트롤 을 잘 조절 하 는 것 에 주의해 야 합 니 다. TabIndex 순서.
물론 이 를 바탕 으로 엔 터 설정 기능 도 추가 할 수 있 습 니 다.배경 코드 로 창 을 다시 쓰기 만 하면 됩 니 다. OnKeyDown 이벤트,다음 과 같 습 니 다:
//
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
// MoveFocus takes a TraveralReqest as its argument.
TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next);
// Gets the element with keyboard focus.
UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;
// Change keyboard focus.
if (elementWithFocus != null)
{
elementWithFocus.MoveFocus(request);
}
e.Handled = true;
}
base.OnKeyDown(e);
}
6.실행 중 로그 인 창 열기로그 인 창 은 주 창 이 아니 기 때문에 로그 인 후 닫 아야 하기 때문에 Startup 의 경 로 는 로그 인 창 이 아니 지만 로그 인 할 때 주 창 을 열 수 없습니다.사용자 가 로그 인 창 을 닫 으 면 프로그램 을 종료 합 니 다.
실현 방법:
프로젝트 다음 에 App.xaml 파일 이 있 습 니 다.Startup 은 주 창의 경 로 를 가리 키 고 배경 코드 App.xaml.cs 를 열 어 OnStartup 이 벤트 를 다시 쓰 고 로그 인 창의 DialogResult 가 ture 로 돌아 오 면 주 창 을 정상적으로 열 고 false 이면 프로그램 전 체 를 닫 습 니 다.코드:
// ,
protected override void OnStartup(StartupEventArgs e)
{
try
{
OneInstanceOnly();//
//#if !DEBUG
//
Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
LoginWindow window = new LoginWindow();
bool? dialogResult = window.ShowDialog();
if (Utils.IsTrue(dialogResult))
{
base.OnStartup(e);
Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
}
else
{
this.Shutdown();
}
//#endif
}
catch (Exception ex)
{
UIUtils.ShowException(ex);
}
}
주의한다 Shutdown Mode 의 변화저자:목석 비 키
출처:http://www.cnblogs.com/EasyInvoice
이상 은 C\#WPF 가 경계선 없 는 로그 인 창 을 만 드 는 예제 입 니 다.c\#WPF 창 을 만 드 는 데 관 한 자 료 는 다른 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.