시간 컨트롤로 가로 스크롤 막대를 사용하는 windows.form을 만들려고합니다. 그런 다음 시간 값은 85 개의 배열에 대한 배열 인덱스로 사용되고 각 배열 값 (0이 아닌)은지도에 줄로 표시되는 베어링을 포함합니다. 내가 가지고있는 문제는 C#과 이벤트 처리에 익숙하지 않아 hScrollBar1_Scroll의 이벤트 (및 값)를 PaintEventArgs 루프에 연결할 수있는 방법을 찾을 수 없다는 것입니다. 모두 동시에 베어링을 표시 할 수있는 85 개 사이트가 있기 때문에 루프가에PaintEventArgs 루프의 매개 변수로 스크롤 막대 값 사용
private void hScrollBar1_Scroll(object sender, ScrollEventArgs e, [PaintEventArgs f])
int t = e.NewValue;
//There's a few lines of code here that convert the value of the scrollbar to time and
//display it in a box.
{
for (int s = 1; s <= 85; s++)
{
if (ldata[s, t, 0] != 0)
{
DrawLinesPoint(s, t, null);
}
}
이유 DrawLinesPoint()입니다 : 아래는 내가 해봤 코드의 샘플입니다.
처음에는 "ScrolleventArgs e"와 함께 "PaintEventArgs f"를 사용했지만 이벤트 처리 방법을 모르므로 DrawlinesPoint()는 "f"대신 "null"을 사용했습니다.
public void DrawLinesPoint(int s, int t, PaintEventArgs e)
{
Graphics g = e.Graphics;
int c = rdata[s,0];
Pen pen;
switch (c)
{
...
//These bearings can be three different colours
}
int x1 = rdata[s,1];
int y1 = rdata[s,2];
int x2 = rdata[s,1] + ldata[s,t,0];
int y2 = rdata[s,2] + ldata[s,t,1];
g.DrawLine(pen, x1, y1, x2, y2);
}
배열 RDATA는 [] [] 3 차원 및 베어링 가져온 데이터를 포함하고 2 차원 위치 및 (IDATA)가 기준에 대한 데이터를 보유하고있다.
지도를 지우고 스크롤 바를 통해 시간이 변경 될 때마다 표시된 베어링이 변경됩니다.
누구든지이 코드를 도움이 될 수 있습니까? 내가 잘못된 방향으로이 일을하고있어서 도움을 얻을 수있는 좋은 기회가 있습니다.
감사합니다. 내가 지금 잘못하고있는 것을 볼 수 있습니다. 전에 모든 데이터를 메서드 내에 보관하고 메서드 호출을 통해 전달하려고하기 때문에 혼동을 느꼈습니다. 연습이 더 필요해. – Lewish