2017-03-06 72 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