質問
ユーザーがコンテンツを追加したListBoxを使用してC#アプリ(WinForm)を作成しています。これで、アイテムを削除するためにリストボックスの下に通常のボタンを置くことができましたが、コンテンツのすぐ隣にボタンを置きたいので、リストボックスの内側になります。
これに似ています:
- コンテンツ1 | X
- コンテンツ2 | X
- ...
- コンテンツ5 | X
問題は、.NETの経験が不足しているため、すべての自動化されたコントロールでこれがどのように可能になるかについての手がかりがないことです。 Googleで検索しましたが、意味のある結果は見つかりませんでした。
これを達成するためのヒント、手がかり、スニペットを歓迎します! :)
解決 2
カスタムコントロールを作成することもできますが、私のアプリでは実際に問題を起こす価値はありません。
DataGridを作成し、ListViewに似せながら独自のフレアを作成しました。これは、DataGridには既にセルにボタンコントロールが組み込まれているためです。
はい、私は知っています、ちょっと「ハック」しますが、それは魅力のように機能します! :)
私をリストボックスの外で考えるように導いたShay Erlichmenに小道具。私がそこで何をしたかを見てください? ;)
他のヒント
ListBoxの代わりにListViewを使用できます。ListViewにはカスタム列タイプを追加する機能があります。
システムの使用。 System.Collections.Genericを使用します。 using System.Windows.Forms;
名前空間WindowsFormsApplication11 { パブリック部分クラスForm1:フォーム { 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(オブジェクト送信者、EventArgs e) { // [追加]ボタンがクリックされた。 // ...
button2.Enabled = true;
}
private void button2_Click(オブジェクト送信者、EventArgs e) { // [削除]ボタンがクリックされた。 // ....
if (listBox1.Items.Count == 0)
{
button2.Enabled = false;
}
}
WinFormsアプリであると仮定
そのためには、カスタムコントロールが必要です。 http:// wwwなどのベンダーを確認します。 devexpress.com/Products/NET/Controls/WinForms/Editors/editors/ListBoxes.xml それを具体的に行うコントロールを誰かが知っているかもしれません。
具体的にそれをしたい理由がわからないのですか?リストボックスで選択したアイテムを削除するボタンを下部に配置します。 jqueryを使用して、データベースに格納されているアイテムを削除する呼び出しを送信するリストボックスにonClickイベントを配置するか、ページ上のリストからアイテムを削除する場合を除き、これは通常の方法です。