listBox 的MouseDown事件
private void lst_MouseDown(object sender, MouseEventArgs e)
{
// DoDragDropメソッドを呼び出す
if(this.lstHeader.SelectedItem != null)
{
this.lstHeader.DoDragDrop(this.lstHeader.SelectedItem, DragDropEffects.Copy);
}
// ドラッグアンドドロップの位置を取得する
int row = this.grdMain.MouseRow;
int col = this.grdMain.MouseCol;
// DragDropする場所を判定する
if(row > 0 && col > 0)
{
// lstHeaderが<空>を選ばれた場合を判断する
if(this.lstHeader.SelectedItem.Equals("<空>"))
{
this.grdMain.GetCellRange(row, col).Clear(ClearFlags.Style);
this.grdMain[row, col] = "";
}
else
{
// 2013/9/24 hw Mod >>
CellStyle cs = this.grdMain.Styles.Add("Yellow");
cs.BackColor = Color.Yellow;
this.grdMain.SetCellStyle(row, col, cs);
// 2013/9/24 hw <<
}
}
}
flexgrid的DragEnter事件
private void grdEnter_DragEnter(object sender, DragEventArgs e)
{
// ドラッグアンドドロップ類型をセットする
if(e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
}
flexgrid的DragDrop事件
private void grdDrop_DragDrop(object sender, DragEventArgs e)
{
// 値を取得する
string item = (string)e.Data.GetData(e.Data.GetFormats()[0]);
int row = this.grdMain.MouseRow;
int col = this.grdMain.MouseCol;
// DragDropする場所は条件を満たすかを判定する
if(row > 0 && col > 0)
{
// 値をセットする
if(item.Equals("<空>"))
{
grdMain.SetData(row, col, " ");
this.grdMain.GetCellRange(row, col).Clear(ClearFlags.Style);
}
else
{
grdMain.SetData(row, col, item);
}
}
}
点击lst_MouseDown事件(设置拖放位置的颜色)和grdDrop_DragDrop事件(设置拖放位置的数据),获取MouseRow和MouseCol的。 |