[DEVEXPRESS/WINFORM] ListSourceDataAdapter 클래스 : DataSource 속성을 사용해 벡터 항목 데이터 동적으로 업데이트 하기
DevExpress/WinForm 2020. 6. 27. 12:04728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Data;
using System.Drawing;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraMap;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 리스트 소스 데이터 어댑터
/// </summary>
private ListSourceDataAdapter listSourceDataAdapter;
/// <summary>
/// 위도
/// </summary>
private double latitude = 0;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
#region 타이머를 설정한다.
this.timer.Interval = 1000;
#endregion
#region 리스트 소스 데이터 어댑터를 설정한다.
this.listSourceDataAdapter = new ListSourceDataAdapter();
listSourceDataAdapter.Mappings.Latitude = "Latitude";
listSourceDataAdapter.Mappings.Longitude = "Longitude";
this.vectorItemsLayer.Data = listSourceDataAdapter;
#endregion
#region 이미지 컬렉션을 설정한다.
Bitmap bitmap = new Bitmap("IMAGE\\plane.png");
ImageCollection imageCollection = new ImageCollection();
imageCollection.ImageSize = new Size(40, 40);
imageCollection.Images.Add(bitmap);
#endregion
#region 맵 컨트롤을 설정한다.
this.mapControl.ImageList = imageCollection;
#endregion
#region 벡터 항목 레이어를 설정한다.
this.vectorItemsLayer.ItemImageIndex = 0;
#endregion
#region 이벤트를 설정한다.
this.timer.Tick += timer_Tick;
this.startButton.Click += startButton_Click;
this.openStreetMapDataProvider.WebRequest += openStreetMapDataProvider_WebRequest;
#endregion
SetListSourceDataAdapterDataSource();
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 타이머 틱 처리하기 - timer_Tick(sender, e)
/// <summary>
/// 타이머 틱 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void timer_Tick(object sender, EventArgs e)
{
SetListSourceDataAdapterDataSource();
}
#endregion
#region Start 버튼 클릭시 처리하기 - startButton_Click(sender, e)
/// <summary>
/// Start 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void startButton_Click(object sender, EventArgs e)
{
if(this.timer.Enabled)
{
this.timer.Stop();
this.startButton.Text = "Start";
}
else
{
this.timer.Start();
this.startButton.Text = "Stop";
}
}
#endregion
#region OPEN STREET MAP 데이터 공급자 웹 요청시 처리하기 - openStreetMapDataProvider_WebRequest(sender, e)
/// <summary>
/// OPEN STREET MAP 데이터 공급자 웹 요청시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void openStreetMapDataProvider_WebRequest(object sender, MapWebRequestEventArgs e)
{
e.UserAgent = "XtraMap Getting Started - Connect to OpenStreetMap";
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 리스트 소스 데이터 어댑터 데이터 소스 설정하기 - SetListSourceDataAdapterDataSource()
/// <summary>
/// 리스트 소스 데이터 어댑터 데이터 소스 설정하기
/// </summary>
private void SetListSourceDataAdapterDataSource()
{
DataTable table = new DataTable("Table");
table.Columns.Add("Latitude" , typeof(double));
table.Columns.Add("Longitude", typeof(double));
DataRow row = null;
this.latitude += 0.5;
if(this.latitude > 180)
{
this.latitude = -180;
}
for(int i = 1; i <= 20; i++)
{
row = table.NewRow();
row["Latitude" ] = Math.Sin(latitude + i) * 76;
row["Longitude"] = Math.Sin(latitude + i - Math.PI / 2) * 176;
table.Rows.Add(row);
}
table.AcceptChanges();
this.listSourceDataAdapter.DataSource = table;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요