私が持っている ATM は検索ボックスと 4 つのリストです リストは禁止リストです 禁止 限定 半限定
今私がやりたいことは、検索ボックスからアイテムをドラッグしたときに、それが追加された(完了した)リストに応じて、その横に番号を付けてテキストファイルに書き込むことです。ライン例
テキストドキュメントは次のように機能します
#Built using DevPro card editor. !new
#forbidden
1 0
#limit
1027 1
#semi limit
12376 2
私が今それを機能させている方法は、このように印刷します
#Built using DevPro card editor.
!new
#forbidden
#limit
#semi limit
1 0
1027 1
12376 2
最初の例のように書きたいので、アイテムを禁止リストにドラッグすると、他の 2 つと同じように #forbidden の下に書き込まれます。これは、ドラッグ ドロップ イベントに現在使用しているコードです。
private void List_DragDrop(object sender, DragEventArgs e)
{
int cardid = Int32.Parse((string)e.Data.GetData(DataFormats.Text));
var list = (ListBox)sender;
int indexOfItemUnderMouseToDrop = list.IndexFromPoint(list.PointToClient(new Point(e.X, e.Y)));
if (e.Data.GetDataPresent(DataFormats.StringFormat))
{
if (!BannedList.Items.Contains(e.Data.GetData(DataFormats.Text)) && !LimitedList.Items.Contains(e.Data.GetData(DataFormats.Text))
&& !SemiLimitedList.Items.Contains(e.Data.GetData(DataFormats.Text)))
{
if (indexOfItemUnderMouseToDrop >= 0 && indexOfItemUnderMouseToDrop < list.Items.Count)
{
list.Items.Insert(indexOfItemUnderMouseToDrop, e.Data.GetData(DataFormats.Text));
}
else
{
list.Items.Add(e.Data.GetData(DataFormats.Text));
if (BannedList.Items.Contains(e.Data.GetData(DataFormats.Text)))
{
using (var writer = new StreamWriter("lflist.conf", true))
writer.WriteLine(Program.CardData[cardid].Id + " 0");
}
else if (LimitedList.Items.Contains(e.Data.GetData(DataFormats.Text)))
{
using (var writer = new StreamWriter("lflist.conf", true))
writer.WriteLine(Program.CardData[cardid].Id + " 1");
}
else if (SemiLimitedList.Items.Contains(e.Data.GetData(DataFormats.Text)))
{
using (var writer = new StreamWriter("lflist.conf", true))
writer.WriteLine(Program.CardData[cardid].Id + " 2");
}
}
}
else
{
if (BannedList.Items.Contains(e.Data.GetData(DataFormats.Text)))
MessageBox.Show(Program.CardData[cardid].Name + " is already contained in the Banned list.");
else if (LimitedList.Items.Contains(e.Data.GetData(DataFormats.Text)))
MessageBox.Show(Program.CardData[cardid].Name + " is already contained in the Limited list.");
else if (SemiLimitedList.Items.Contains(e.Data.GetData(DataFormats.Text)))
MessageBox.Show(Program.CardData[cardid].Name + " is already contained in the SemiLimited list.");
}
}
}
つまり、問題は、ストリームライターに行を見つけて、その下の行に書き込む方法です