0

レジストリ ウィンドウ フォーム syncfusion、グリッド コントロール xcel にあるようなポップアップ ボックスを追加しようとしています。セルを右クリックして挿入すると、挿入する必要がある行数を尋ねる小さなポップアップ ボックスが表示されます。

だからこれは私がやったことです

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();
}

しかし、数値アップダウンでパネルを追加するこの方法はうまくいかないようです。基本的に、挿入をクリックしたら、数値アップダウンとボタンを備えた小さなウィンドウ/パネルが必要です。ユーザーはアップ/ダウンから値を選択し、[OK] ボタンをクリックします。

助言がありますか?

ありがとうサン

4

1 に答える 1

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();
    }
于 2012-06-19T11:05:30.103 に答える