[ Mar_go @ 16.03.2004. 08:23 ] @
Zdravo svima,
da li mi neko moze pomoci ovo iz VB.Net-a u C# da konvertujem. Hvala na svakoj pomoci.


Private Sub ButtonLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLog.Click
' Login to Exchange Server
oSession = CreateObject("MAPI.Session")
oSession.Logon(ShowDialog:=False, NewSession:=False)

If (oSession.CurrentUser.Name = "Unknown") Then
'Not a good logon, logoff and exit
oSession.Logoff()
MsgBox("Logon error!", MsgBoxStyle.OKOnly + MsgBoxStyle.Exclamation, "CDO Logon")
Exit Sub
End If
End Sub

Private Sub ButtontvFill_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtontvFill.Click
' Fill Tree View with MAPI Folders
Dim oStore As MAPI.InfoStore
Dim childNode As TreeNode

rootNode = Me.TreeViewMAPIFolders.Nodes.Add("Exchange Folders")
For Each oStore In oSession.InfoStores
childNode = Me.rootNode.Nodes.Add(oStore.Name)
RecurseFolder(oStore.RootFolder, childNode)
Next
ButtontvFill.Visible = False
End Sub

Private Sub RecurseFolder(ByVal RootFolder As MAPI.Folder, ByVal parentNode As TreeNode)
Dim subNode As TreeNode
Dim subFolder As MAPI.Folder

For Each subFolder In RootFolder.Folders
subNode = New TreeNode(subFolder.Name)
parentNode.Nodes.Add(subNode)
RecurseFolder(subFolder, subNode)
Next
End Sub
[ Dragi Tata @ 16.03.2004. 17:30 ] @
Imaš programe koji to automatski rade. Npr:

http://www.codeproject.com/csharp/gbvb.asp
[ Mar_go @ 16.03.2004. 22:24 ] @
Hvala na odgovoru!
Ja sam sada to ovako sama pocetnicki pokusala, medjutim dobijam error da foreach
ne moze na varijable tipa object da se primenjuje, zato sto nema definiciju za "GetEnumerator"... ?????
Eine 'foreach'-Anweisung kann nicht auf Variablen des Typs 'object' angewendet werden, weil 'object' keine Definition für 'GetEnumerator' enthält, oder Zugriff nicht möglich ist.



MAPI.Session oSession = new MAPI.Session();
Object vEmpty = Missing.Value;
// Login to Exchange Server
oSession.Logon(vEmpty, vEmpty, true, true, 0, true, vEmpty);

MAPI.InfoStores oStore = null;
TreeNode childNode = null;
TreeNode rootNode = TreeViewMAPIFolders.Nodes.Add("Exchange Folders");

foreach (MAPI.InfoStores oStore in oSession.InfoStores)
{

childNode = this.rootNode.Nodes.Add(oStore.Name);
RecurseFolder(oStore.RootFolder, childNode);
}

Unapred hvala,
Margo
[ ZokiR @ 17.03.2004. 13:31 ] @
U c#, foreach se koristi samo za kolekcije koje implementiraju IEnumerable interfejs ili ako deklarišu GetEnumerator metod.

U ovom slučaju možeš da upotrebiš običnu for petlju uz Count i get_Item():

Code:
            
for (int i = 1; i <= (int)((MAPI.InfoStores)session.InfoStores).Count; i++)
{
    MAPI.InfoStore store = (MAPI.InfoStore)((MAPI.InfoStores)session.InfoStores).get_Item(i);
    childNode = rootNode.Nodes.Add((string)store.Name);
    this.RecurseFolder((MAPI.Folder)store.RootFolder, childNode);
}
[ mmix @ 18.03.2004. 09:59 ] @
Citat:
ZokiR:
U c#, foreach se koristi samo za kolekcije koje implementiraju IEnumerable interfejs ili ako deklarišu GetEnumerator metod.

Isto važi i za VB.NET. Postoji i COM verzija IEnumerable i COM platform invoke uvek za COM kolekcije implementira .NET IEnumerable, pa su COM kolekcije dostupne kao takve u .NETu. MIslim da se ovde krije nešto drugo.
BTW, mali input, čak i MS preporučuje sa strane optimizacije da se ne koristi foreach, pošto je sporiji od for(x=0;x<Count;x++)