2017-03-06 70 views
1

我有兩個GridListControl窗口有5行3列,我已經在每個單元格中輸入了一些硬編碼值,但我想通過使用RandomTimer在每個單元格中動態更新它。 我從Here:經過,但沒有清除我的概念。如何在C#中的GridListControl中隨機生成單元格數據?

如何整合RandomTimer與我的代碼?

請幫忙。我的代碼

部分低於:

namespace First_Form_Demo 
{ 
public partial class Form1 : Form 
{ 
    List<Tuple<int, int, double>> list_Tuple_BuySideDepth = null; 
    List<Tuple<double, int, int>> list_Tuple_BuySideDepth1 = null; 
    public Form1() 
    { 
     InitializeComponent(); 
     Init(); 
    } 

    private void Init() 
    { 
    // For GridListControl1. 
      list_Tuple_BuySideDepth = new List<Tuple<int, int, double>>(); 
      list_Tuple_BuySideDepth.Add(new Tuple<int, int, double>(3, 451, 67.0050)); 
      list_Tuple_BuySideDepth.Add(new Tuple<int, int, double>(9, 655, 67.0025)); 
      list_Tuple_BuySideDepth.Add(new Tuple<int, int, double>(17, 2045, 67.0000)); 
      list_Tuple_BuySideDepth.Add(new Tuple<int, int, double>(22, 2080, 66.9875)); 
      list_Tuple_BuySideDepth.Add(new Tuple<int, int, double>(23, 1564, 66.9950)); 

    // For GridListControl2. 
      list_Tuple_BuySideDepth1 = new List<Tuple<double, int, int>>(); 
      list_Tuple_BuySideDepth1.Add(new Tuple<double, int, int>(67.0075, 813, 10)); 
      list_Tuple_BuySideDepth1.Add(new Tuple<double, int, int>(67.0100, 1255, 28)); 
      list_Tuple_BuySideDepth1.Add(new Tuple<double, int, int>(67.0125, 715, 13)); 
      list_Tuple_BuySideDepth1.Add(new Tuple<double, int, int>(67.0150, 1687, 19)); 
      list_Tuple_BuySideDepth1.Add(new Tuple<double, int, int>(67.0175, 1612, 24)); 
    }  
} 

private void Form1_Load(object sender, EventArgs e) 
{   
    MaximizeBox = false; 
    MinimizeBox = false; 
    if (true) 
    { 
     gridListControl1.MultiColumn = true; 
     gridListControl1.ForeColor = Color.Red; 
     gridListControl1.DataSource = list_Tuple_BuySideDepth; 
     this.gridListControl1.Grid.HScrollBehavior = Syncfusion.Windows.Forms.Grid.GridScrollbarMode.Disabled;//GridScrollbarMode.Disabled; 
     gridListControl2.MultiColumn = true; 
     gridListControl2.ForeColor = Color.Red; 
     gridListControl2.DataSource = list_Tuple_BuySideDepth; 
     this.gridListControl2.Grid.HScrollBehavior = Syncfusion.Windows.Forms.Grid.GridScrollbarMode.Disabled; 
    } 
} 

回答

1

只需用一個定時器和更新與新的隨機值的所有項目,如

private System.Windows.Forms.Timer updateTimer = new System.Windows.Forms.Timer(); 
public Form1() 
{ 
    InitializeComponent(); 

    updateTimer.Interval = 1000; 
    updateTimer.Tick += new EventHandler(update); 
    updateTimer.Start(); 
} 

private Random rnd = new Random(); 
private void update(Object object, EventArgs eventArgs) 
{ 
    for (int i = 0; i < list_Tuple_BuySideDepth.Count; i++) 
    { 
     list_Tuple_BuySideDepth[i] = new Tuple<int, int, double>(rnd.Next(), rnd.Next(), rnd.NextDouble()); 
    } 
    for (int i = 0; i < list_Tuple_BuySideDepth1.Count; i++) 
    { 
     list_Tuple_BuySideDepth1[i] = new Tuple<double, int, int>(rnd.NextDouble(), rnd.Next(), rnd.Next()); 
    } 
} 
+0

我做你的方式,但錯誤就這樣產生'財產或索引器系統。不能將其分配給 - 它只能讀取。 如何解決它? –

+0

嗨,我以你的方式做了。謝謝你。 另外一個問題我已經知道如何在上面的程序中禁用'grid list control'中的垂直滾動條。 請建議。 –

+0

看看這個鏈接:https://www.syncfusion.com/kb/6659/how-to-hide-horizo​​ntal-scroll-bars-in-gridlistcontrol – Fruchtzwerg

0

請使用定時器來動態更新數據源和要禁用垂直滾動條,可以使用VScrollBehavior屬性。請參閱附件樣品和使用下面的代碼中,

Timer timer; 
     timer = new Timer(); 
     timer.Tick += new EventHandler(timer_Tick); 

void timer_Tick(object sender, EventArgs e) 
     { 
      Random rand = new Random(); 
      int r = rand.Next(1000,10000); 
      for (int i = 0; i < 10; i++) 
      { 
       list1[i] = new Data(r.ToString(), "Category" + r.ToString(), "Desc" + r.ToString(), r.ToString() + "Data"); 
       list2[i] = new Data(r.ToString(), "Category" + r.ToString(), "Desc" + r.ToString(), r.ToString() + "Data"); 
      r = rand.Next(1000, 10000); 
     } 

     GridRangeInfo range1 = this.gridListControl1.Grid.ViewLayout.VisibleCellsRange; 
     GridRangeInfo range2 = this.gridListControl2.Grid.ViewLayout.VisibleCellsRange; 
     this.gridListControl1.Grid.RefreshRange(range1); 
     this.gridListControl2.Grid.RefreshRange(range2); 
    } 
    public void Init() 
    { 
     list1 = new List<Data>(); 
     list2 = new List<Data>(); 

     Random rand = new Random(); 
     int r = rand.Next(100); 
     for (int i = 0; i < 10; i++) 
     { 

      list1.Add(new Data(r.ToString(), "Category" + r.ToString(), "Desc" + r.ToString(), r.ToString() + "Data")); 
      r = rand.Next(100); 
      list2.Add(new Data(r.ToString(), "Category" + r.ToString(), "Desc" + r.ToString(), r.ToString() + "Data")); 
     } 
    } 

    private void btn_Start_Click(object sender, EventArgs e) 
    { 
     timer.Interval = 1000; 
     timer.Start(); 
    } 

    private void btn_Stop_Click(object sender, EventArgs e) 
    { 
     timer.Stop(); 
    } 

//To disable the VerticalScrollbar 
this.gridListControl1.Grid.VScrollBehavior = Syncfusion.Windows.Forms.Grid.GridScrollbarMode.Disabled; 

樣本鏈接: [https://drive.google.com/open?id=0B9MOGv1FOt-TcUlqQjJaQXdLSnc]

-Prithivi