문제
사용자가 컨텐츠를 추가 한 ListBox가있는 C# 앱 (winform)을 작성하고 있습니다. 이제 ListBox 아래에 일반 버튼이있을 수 있지만 항목을 제거 할 수 있지만 콘텐츠 바로 옆에 버튼이있어 ListBox 내부에 있습니다.
이와 같이:
- 내용 1 | 엑스
- 내용 2 | 엑스
- ...
- 내용 5 | 엑스
문제는 .NET에서의 경험이 부족하여 모든 자동화 된 컨트롤이 진행되는 경우 이것이 어떻게 가능한지에 대한 단서가 없다는 것입니다. 나는 그것을 googed했지만 의미있는 결과는 없었습니다.
이를 달성하기위한 힌트, 단서 또는 스 니펫은 환영합니다! :)
해결책 2
따라서 사용자 지정 제어를 할 수는 있지만 내 앱의 경우 실제로 문제가되지 않습니다.
내가 한 일은 Datagrid를 만들고 ListView와 비슷하지만 고유 한 플레어와 비슷하게 만들었습니다. Datagrid에는 이미 셀에 버튼 콘트롤이 내장되어 있기 때문에이 작업을 수행했습니다.
예, 나는 어리석은 "해킹"의 일종이지만, 그것은 매력처럼 작동합니다! :)
Shay Erlichmen에게 소품을 보냈습니다. 내가 거기서 뭘했는지 보시겠습니까? ;)
다른 팁
ListBox 대신 ListView를 사용할 수 있으며 ListView는 다음과 같습니다. 사용자 정의 열 유형을 추가하는 기능.
시스템 사용; System.collections.generic 사용; System.windows.forms 사용;
네임 스페이스 windows formsapplication11 {공개 부분 클래스 form1 : form {list _items = new list ();
public Form1()
{
InitializeComponent();
_items.Add("One");
_items.Add("Two");
_items.Add("Three");
listBox1.DataSource = _items;
}
private void button1_Click(object sender, EventArgs e)
{
// The Add button was clicked.
_items.Add("New item " + DateTime.Now.Second);
// Change the DataSource.
listBox1.DataSource = null;
listBox1.DataSource = _items;
}
private void button2_Click(object sender, EventArgs e)
{
// The Remove button was clicked.
int selectedIndex = listBox1.SelectedIndex;
try
{
// Remove the item in the List.
_items.RemoveAt(selectedIndex);
}
catch
{
}
listBox1.DataSource = null;
listBox1.DataSource = _items;
}
}
}
private void button1_click (Object Sender, Eventargs e) {// 추가 버튼이 클릭되었습니다. // ...
button2.Enabled = true;
}
private void button2_click (Object Sender, Eventargs e) {// 제거 버튼이 클릭되었습니다. // ....
if (listBox1.Items.Count == 0)
{
button2.Enabled = false;
}
}
Winforms 앱이라고 가정합니다
이를 위해 맞춤 제어가 필요합니다. 나는 공급 업체를 좋아하는 것을 확인할 것입니다 http://www.devexpress.com/products/net/controls/winforms/editors/editors/listboxes.xml 어쩌면 누군가가 구체적으로 그렇게하는 통제에 대해 알고있을 것입니다.
왜 그렇게 구체적으로하고 싶은지 모르겠어? 맨 아래에 버튼을 넣어 ListBox에서 선택한 항목을 삭제합니다. jQuery를 사용하지 않고 항목이 데이터베이스에 저장된 경우 항목을 삭제하거나 페이지의 목록에서 항목을 제거하는 경우 항목을 삭제하는 통화를 보내는 OnClick 이벤트를 작성하지 않는 한 일반적인 방법으로 간주됩니다. .