私はファイル転送(サーバークライアント)アプリケーションを作成しています。
ローカルPCとリモートPCを探索する2つのリストビューがあります。アイテムを送受信する前に..
別のファイルやフォルダがあるかどうかを確認する必要があります宛先パスに同じ名前があります。 [送信または受信]ボタンを押すと、リストに追加された項目が表示されます。[開始転送]ボタンを押すと開始します。私はボタンが受信または送信を押すと
アイテム[name&subItemのテキスト]がすでに別のlistViewに存在するかどうかを確認する方法は?
のでAddItems方法は、私は、各項目をチェックし...私はソースリストビューから selectedItemsの ...とアイテム先リストビューのを取得します。..と呼ばれます selectedItemsので、それは私が
を使用しようとした アイテムに存在している場合
しかし、それがうまくいかなかったのは、そのアイテムが既に存在していても私には常に間違いを与えました。
私はitems.ContainKeyを使用し、それは働いた..しかし、私は "Temp"という名前のファイルを拡張子なしで、宛先パスに "Temp"という名前のフォルダを持っています..それはTrueを返します。
bool YesToAll = false;
public void AddItems(ListView.SelectedListViewItemCollection selectedItems, ListView.ListViewItemCollection items,TransferType type,string destPath)
{
foreach(ListViewItem item in selectedItems)
{
if (items.ContainsKey(item.Name) && !YesToAll)
{
MyMessageBox msgbox = new MyMessageBox("Item is already exists .. Do you want to replace (" + item.Text + ") ?");
msgbox.ShowDialog();
if (msgbox.DialogResult == DialogResult.Yes)
{
Add(item, type, destPath);
}
else if (msgbox.DialogResult == DialogResult.OK)
{
YesToAll = true;
Add(item, type, destPath);
}
else if (msgbox.DialogResult == DialogResult.No)
{
continue;
}
else
{
return;
}
}
else
{
Add(item, type, destPath);
}
}
YesToAll = false;
}
private void Add(ListViewItem item,TransferType type,string path)
{
ListViewItem newItem = (ListViewItem)item.Clone();
newItem.ImageIndex = imageList1.Images.Add(item.ImageList.Images[item.ImageIndex],Color.Transparent);
newItem.SubItems.Add(type.ToString());
newItem.SubItems.Add(path);
newItem.Tag = type;
listView1.Items.Add(newItem);
}
YesToAllは、確認ダイアログボックスの[Yes to all]ボタンをクリックしたときにtrueに設定されます。
なtransferTypeは、SendMethodまたはReceiveMethod
public enum TransferType
{
Send , Receive
};
を使用するように起こっている場合、私は使用する必要があります。..ので、私はそれをどのように修正すればよいだけのアイテムをマークするために、独自の方法ではなく、[含まれて]の名前のためにとをチェックしています各項目にはすでにフォルダまたはファイルであるかどうかを示すサブアイテムがあるので、タイプ(ファイルまたはフォルダ)は
ありがとうございます。
を試してみてください。 – PraveenVenu
@PraVn各アイテムにはサブアイテム[1]があります。ファイルの場合はサイズ[15 M.B]になります。フォルダの場合は[フォルダ]になります。既にアイテムタイプがあることを意味します。 –
@TimSchmelterアイテムのタイプはListViewItemです。 –