我正在做一個文件傳輸(服務器 - 客戶端)應用程序..
我有兩個listviewS探索本地PC和遠程PC ..之前發送/接收項目..
我需要檢查是否有另一個文件或文件夾有同名的目的地路徑.. 當我按下按鈕[發送或接收]項目添加到列表..然後當我按下按鈕[開始傳輸] ..它開始。
如何檢查項目[name&subItem的文本]是否已經存在於另一個listView中?
所以爲addItems調用的方法,當我按下按鈕接收或發送..我從源的ListView ..的 SelectedItems和項目目標的ListView ...然後我檢查每個項目在 SelectedItems,如果它是存在於項目
我試圖用
items.Contain(item)
但它沒有工作,它總是讓我虛假,即使該項目已經存在。
所以我使用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設置爲true。
以TransferType只是爲了紀念,如果它要使用SendMethod或ReceiveMethod
public enum TransferType
{
Send , Receive
};
那麼,如何解決這個問題的項目..我應該使用一個自定義的方法,而不是[包含],對於名稱和檢查類型(文件或文件夾),因爲每個項目已經有一個子項,告訴它是否是一個文件夾或文件
在此先感謝。
您需要添加另一個函數來獲取類型(文件或文件夾),然後使用在相同的if語句。 – PraveenVenu 2012-03-12 08:10:32
@PraVn每個項目都有子項目[1] ..如果它是一個文件,它將是大小[15 M.B] ..如果它是一個文件夾,它將[文件夾] ..我的意思是我已經有項目類型。 – 2012-03-12 08:26:57
@TimSchmelter項目的類型是ListViewItem :) – 2012-03-12 08:27:12