private void SelectDgvItems(bool ClearRequest)
{
// Check if there's a line
if (programs_dgv.RowCount <= 0)
{
return;
}
// Sort by name
programs_dgv.Sort(programs_dgv.Columns[2], ListSortDirection.Ascending);
// Select required rows and set scrolling position
if (SelectedIndexes != null)
{
if (ClearRequest == true)
{
programs_dgv.ClearSelection();
}
for (int i = 0; i <= SelectedIndexes.Count() - 1; i++)
{
programs_dgv[1, SelectedIndexes[i]].Selected = true;
}
}
MessageBox.Show(LastSelectedIndex.ToString());
}
private void programs_dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
programs_dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void programs_dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
CurrentRowIndex = e.RowIndex;
Console.WriteLine(LastSelectedIndex.ToString() + " " + CurrentRowIndex.ToString());
// Check if there's a line
if (programs_dgv.Rows == null)
{
return;
}
SelectedIndexes.Clear();
SelectedIndexes = null;
SelectedIndexes = new List<int>();
// Reset SelectedIndexes
for (int i = 0; i <= programs_dgv.RowCount - 1; i++)
{
if (programs_dgv.Rows[i].Selected == true)
{
SelectedIndexes.Add(i);
}
}
// When shift+click
if (e.Button == MouseButtons.Left && (ModifierKeys & Keys.Shift) == Keys.Shift)
{
if (CurrentRowIndex >= 0)
{
SelectedIndexes.Clear();
SelectedIndexes = null;
SelectedIndexes = new List<int>();
// Set SelectedIndexes
for (int i = LastSelectedIndex; i <= CurrentRowIndex; i++)
{
SelectedIndexes.Add(i);
Console.WriteLine(SelectedIndexes[i].ToString() + Environment.NewLine);
}
// Select dgv items (ClearRequest = false)
SelectDgvItems(false);
return;
}
SelectDgvItems(false);
return;
}
// When ctrl is not pressed
if (e.Button == MouseButtons.Left && (ModifierKeys & Keys.None) == Keys.None)
{
SelectedIndexes.Clear();
SelectedIndexes = null;
SelectedIndexes = new List<int>
{
CurrentRowIndex
};
// Set dgv items (ClearRequest = true)
SelectDgvItems(true);
return;
}
// right click
if (e.Button == MouseButtons.Right)
{
// Open context menu
int currentMouseOverRow = programs_dgv.HitTest(e.X, e.Y).RowIndex;
if (currentMouseOverRow >= 0)
{
Cms_DatagridView.Items[0].Text = "düzenle (" + SelectedIndexes.Count().ToString() + ")";
}
Cms_DatagridView.Show(programs_dgv, programs_dgv.PointToClient(System.Windows.Forms.Control.MousePosition));
// -----------------------------------------------------------------------------
// If current row isn't selected add it to the list
if (programs_dgv.Rows[CurrentRowIndex].Selected == false)
{
SelectedIndexes.Add(CurrentRowIndex);
}
SelectedIndexes.Clear();
SelectedIndexes = null;
SelectedIndexes = new List<int>
{
CurrentRowIndex
};
SelectDgvItems(true);
LastSelectedIndex = CurrentRowIndex;
return;
}
}