사용자 정의 컨트롤의 복사본을 동적으로 생성하는 Windows Form (C#)이 있습니다. 하위 사용자 컨트롤 각각에는 타이머가 있습니다.사용자 정의 컨트롤에서 기본 폼으로 값 사용 (C#)
나는 모든 사용자 컨트롤 (전체 타이머의 합계)이 소비 한 전체 시간을 기본 폼에 정리하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 사용자 정의 컨트롤이 타이머 값을 기본 폼에 "보내도록"어떻게 만들 수 있습니까?
감사합니다.
사용자 정의 컨트롤의 복사본을 동적으로 생성하는 Windows Form (C#)이 있습니다. 하위 사용자 컨트롤 각각에는 타이머가 있습니다.사용자 정의 컨트롤에서 기본 폼으로 값 사용 (C#)
나는 모든 사용자 컨트롤 (전체 타이머의 합계)이 소비 한 전체 시간을 기본 폼에 정리하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 사용자 정의 컨트롤이 타이머 값을 기본 폼에 "보내도록"어떻게 만들 수 있습니까?
감사합니다.
당신이 타이머 값을 반환 속성 TimeSpent를 추가 사용자 정의 컨트롤 내부에서 윈도우 폼
로 요약 될 수 속성 TimeSpent에 노출 될 수 있습니다 사용자 정의 컨트롤 소요되는 시간을 계산하려면
public long TimeSpent
{
get { return getTimeSpent(); }
}
타이머가 실행 된 횟수를 기억하고 타이머 간격 속성에 해당 숫자를 곱해야합니다.
getTimeSpent()
기능은 완료하는 데 걸리는 시간 뭔가 계산하려는 경우 타이머보다는 System.Diagnostics.StopWatch을 할 수 있다는 것을 그냥
또 다른 방법은 쉽게 대표를 사용하여 구현 될 수있는 C#으로, 관찰자 패턴의 어떤 종류를 구현하는 것입니다. 먼저 원하는 서명을 가진 대리자를 만든 다음 대리자 형식의 이벤트를 포함시킨 다음 사용자의 컨트롤 이벤트가 발생할 때 이벤트를 발생시킵니다. UserControl의 인스턴스를 만들 때마다 클라이언트의 일부 메서드 (옵저버)로 선언 한 이벤트 (대리자 서명과 일치)를 연결합니다.
public delegate void MyUserControlEvent(UserControl control, object sender, EventArgs e);
public partial class MyUserControl : UserControl
{
public event MyUserControlEvent TheEvent;
private void TimerFecha_Tick(object sender, EventArgs e)
{
if (TheEvent != null) { TheEvent(this, sender, e); }
}
}
public partial class SomeClient : SomeBase
{
public SomeClient()
{
MyUserControl control = new MyUserControl();
control.TheEvent = TheListenerProcedure;
}
public void TheListenerProcedure(UserControl control, object sender, EventArgs e)
{
/* IMPLEMENT LOGIC HERE */
}
}
타이머에는 시간이 없으며 '가치'가 없습니다. 그냥 Tick 이벤트로 이벤트를 실행합니다. –
나의 나쁜, 나는 그것을 명확하게하지 않았다 - 나는 그것을 타이머라고 부른다. 그러나 그것은 당신이 시작과 멈춤을 클릭 할 때의 차이로 계산 된 DateTime 값이다. – Aidenn