728x90
반응형
위/아래 이동은 버튼을 추가했다고 가정한다.
DevExpress의 ListBoxControl도 동일하게 동작가능하다.
아래 코에서 ListBox를 ListBoxControl로 수정해서 사용하면 된다.
public static class ListBoxExtension
{
public static void MoveSelectedItemUp(this ListBox listBox)
{
_MoveSelectedItem(listBox, -1);
}
public static void MoveSelectedItemDown(this ListBox listBox)
{
_MoveSelectedItem(listBox, 1);
}
static void _MoveSelectedItem(ListBox listBox, int direction)
{
// Checking selected item
if (listBox.SelectedItem == null || listBox.SelectedIndex < 0)
return; // No selected item - nothing to do
// Calculate new index using move direction
int newIndex = listBox.SelectedIndex + direction;
// Checking bounds of the range
if (newIndex < 0 || newIndex >= listBox.Items.Count)
return; // Index out of range - nothing to do
object selected = listBox.SelectedItem;
// Save checked state if it is applicable
//var checkedListBox = listBox as CheckedListBox;
//var checkState = CheckState.Unchecked;
//if (checkedListBox != null)
// checkState = checkedListBox.GetItemCheckState(checkedListBox.SelectedIndex);
// Removing removable element
listBox.Items.Remove(selected);
// Insert it in new position
listBox.Items.Insert(newIndex, selected);
// Restore selection
listBox.SetSelected(newIndex, true);
// Restore checked state if it is applicable
//if (checkedListBox != null)
// checkedListBox.SetItemCheckState(newIndex, checkState);
}
}
출처: StackOverflow
반응형
'개발 > C#' 카테고리의 다른 글
C#과 Node.js(TS)에서 각각 Sha256 Hash 같은 값 나오게 하기 (0) | 2024.02.15 |
---|---|
Datatable을 Listview에 바인딩해서 사용하기 (0) | 2024.02.13 |
.net6에서 process.start로 다른 프로그램 또는 브라우저 실행 시 오류해결 (0) | 2024.01.08 |
바닐라 ListBox 항목 별 색깔 바꾸기 (0) | 2023.08.17 |
싱글 인스턴스로 프로그램 실행하기 (0) | 2023.07.04 |