0

私はGridviewを持っていて、Row内のすべてのセルにクリックイベントを設定したいですか? タスクを完了するには??

このコードを試しましたが、セルをダブルクリックすると、新しいフォームが現在のフォームの後ろ/後ろに表示されます。前面に表示するには?

 private void gridView2_DoubleClick(object sender, EventArgs e)
    {
        GridHitInfo celclick = gridView2.CalcHitInfo(gridControl2.PointToClient(Control.MousePosition));

        if (celclick.InRow)
        {

        }
    }

私を助けてください。

4

3 に答える 3

2

次のようにGridView.RowCellClickイベントを使用します。

gridControl1.DataSource = new List<Person> { 
    new Person(){ Name="John Smith"},
    new Person(){ Name="Mary Smith"}
};
gridView1.OptionsBehavior.Editable = false; // disable editing
gridView1.RowCellClick += gridView1_RowCellClick;
//...
void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) {
    if(e.Clicks == 2) { // Double Click
        object cellValue = e.CellValue;
        //do some stuff
    }
}
//...
class Person {
    public string Name { get; set; }
}
于 2013-11-11T13:23:11.943 に答える
2

ここにはテストするためのVisual Studioはありませんが、次のようにする必要があると思います:

 foreach(GridViewRow row in gridView2.Rows)
 {
       //Here you need something to get the cells out of row
       cell.Click += (s, e) => { myClickEvent(c); };
 }

幸運を

編集:これを試してください:

 foreach(GridViewRow row in gridView2.Rows)
 {
     foreach (DataControlFieldCell cell in row.Cells)
     {
         cell.Click += (s, e) => { myClickEvent(c); };
     }
 }
于 2013-11-11T11:34:18.140 に答える
0

解決策は次のとおりです。

DataTable dt = new DataTable();
    private void B_Click(object sender, EventArgs e)
    {

        Button bt = (Button)sender;
        int productId = (int)bt.Tag;
        AddProductDataContext db = new AddProductDataContext();
        decimal Quantity;
        decimal.TryParse(txtCalculator.Text, out Quantity);
        var results = from inv in db.Inventories
                      where inv.RecId == productId
                      select new
                      {
                          inventoryName = inv.InventoryName,
                          Quantity,
                          Total = Quantity * inv.InventoryPrice
                      };





        foreach (var x in results)
        {
            DataRow newRow = dt.NewRow();
            newRow.SetField("inventoryName", x.inventoryName);
            newRow.SetField("Quantity", x.Quantity);

            newRow.SetField("Total", x.Total);
            dt.Rows.Add(newRow);



        }


        gridControl1.DataSource = dt;


    }              
    private void SaleScreen_Load(object sender, EventArgs e)
    {

        dt.Columns.Add("inventoryName");
        dt.Columns.Add("Quantity");
        dt.Columns.Add("Total");

    }

この方法で問題を解決しました。皆様の貴重なご協力に感謝いたします。

于 2016-05-14T11:05:43.003 に答える