0

Reg windows forms syncfusion, управление сеткой Я пытаюсь добавить всплывающее окно, подобное тому, которое у нас есть в xcel. При щелчке правой кнопкой мыши ячейки, а затем вставки, небольшое всплывающее окно спрашивает, сколько строк нужно вставить.добавление numericup вниз в управление сеткой синхронизации.

Так это то, что я сделал

private void InsertRowToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      GridRangeInfoList list; 

      list = theGrid.Selections.GetSelectedRows(true, false); 
      int rowNumber = list.ActiveRange.Top; 
      Panel box = new Panel(); // 
      NumericUpDown ud1 = new NumericUpDown(); 

      ud1.Dock = DockStyle.Left; ud1.Width = 30; 
      ud1.BorderStyle = BorderStyle.FixedSingle; 
      box.Controls.Add(ud1); 
      box.BorderStyle = BorderStyle.None; 
      Button btn = new Button(); 
      btn.Dock = DockStyle.Bottom; 
      btn.Text = "OK"; 
      box.Controls.Add(btn); 

      this.Controls.AddRange(new System.Windows.Forms.Control[] { box }); 
      btn.Click += new EventHandler(btn_Click); 
      theGrid.Controls.Add(box); 
      box.Dock = DockStyle.Bottom; 
      box.Show(); 
      numberOfRowstobeInserted = (int)ud1.Value; 
      this.Controls.Add(box); 
      theData.CreateRowsToInsert(rowNumber, numberOfRowstobeInserted); 

      theGrid.Refresh(); 
} 

Но этот способ добавить панель с цифровой UpDown не похоже на работу. В принципе, после щелчка по вставке я хочу небольшое окно/панель с числовым обновлением и кнопкой. Пользователь выбирает значение с помощью кнопки вверх/вниз, а затем нажимает кнопку «ОК».

Любые предложения?

Благодаря ВС

ответ

0

Вы можете обрабатывать следующий пересмотренный код, чтобы заставить его работать.

private Panel box; 
    private NumericUpDown ud1; 
    private Button btn;   
    int rowNumber, rowIndex, colIndex; 
    GridStyleInfo style; 

    void ContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 
     rowNumber = this.gridGroupingControl1.Table.CurrentRecord.GetSourceIndex(); 
     rowIndex = this.gridGroupingControl1.TableControl.CurrentCell.RowIndex; 
     colIndex = this.gridGroupingControl1.TableControl.CurrentCell.ColIndex; 
     style = this.gridGroupingControl1.TableControl.GetViewStyleInfo(rowIndex,colIndex); 
     box = new Panel(); // 
     ud1 = new NumericUpDown(); 

     ud1.Location = new Point(15, 15); 
     ud1.Size = new Size(50, 10); 
     ud1.BorderStyle = BorderStyle.FixedSingle; 
     box.Controls.Add(ud1); 
     box.BorderStyle = BorderStyle.None; 

     btn = new Button(); 
     btn.Location = new Point(30, 50); 
     btn.Size = new Size(30,20); 
     btn.Text = "OK"; 
     btn.Click += new EventHandler(btn_Click); 
     box.Controls.Add(btn); 

     box.Location = this.gridGroupingControl1.TableControl.CurrentCell.Renderer.GetCellLayout(rowIndex, colIndex, style).ClientRectangle.Location; 
     box.Size = new Size(80, 70); 

     this.gridGroupingControl1.Controls.Add(box); 
     box.Show(); 
     box.BringToFront(); 
    } 

    void btn_Click(object sender, EventArgs e) 
    { 
     int numberOfRowstobeInserted = (int)ud1.Value; 
     DataTable dt = (this.gridGroupingControl1.DataSource as DataView).Table; 
     for (int count = 0; count < numberOfRowstobeInserted; count++) 
     { 
      DataRow dr = dt.NewRow(); 
      for (int i = 0; i < dt.Columns.Count; i++) 
       dr[i] = 0; //default value 
      dt.Rows.InsertAt(dr, rowNumber++); 
     } 
     box.Dispose(); 
    }