2017-03-06 20 views
1

私は5行3列の2つのGridListControlウィンドウを持っており、各セル内にいくつかのハードコードされた値をputedしていますが、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'で垂直スクロールバーを無効にする方法がもう1つあります。 お勧めです。 –

+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

私はあなたの方法でやった
関連する問題