Entwickler-Ecke

WinForms - Frage zu eigenen Dialog


Delete - Mo 03.11.08 14:38
Titel: Frage zu eigenen Dialog
Hi,
ich hab mir nen eigenen Dialog gebastelt. Dieser zeigt mir in einer TreeView meine Ordner an. Jetzt möchte ich den Pfad des Ordners den man ja mit treeview.selectednode.fullpath abrufen kann. Das Problem das ich habe ist, dass ich von einer anderen Klasse auf diesen Dialog zugreifen möchte und den Pfad zurückgeben möchte. Dieser wird bzw soll dann weiter verarbeitet werden. Wie kann ich von der einen Klasse auf meinen Pfad zugreifen.

ALs Beispiel:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Meine Klasse in der der Treeview erzeugt wird:

public CustomFolderBrowserDialog()
        {
            InitializeComponent();
            triStateTreeView1.Nodes.Clear();

            String path = "C:\\Daten";

            triStateTreeView1.Nodes.Add(path);
            
            PopulateTreeView(path, triStateTreeView1.Nodes[0]);
            
        }



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Klasse in der ich dann auf den Pfad zugreifen möchte:

public string ShowCustomFolderBrowserDialog()
        {
            CustomFolderBrowserDialog customfolderbrowserdialog = new CustomFolderBrowserDialog();
            
            if (customfolderbrowserdialog.ShowDialog() != DialogResult.OK)
            {
                MessageBox.Show("You have canceled the File Selection""Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }
           [u] return customfolderbrowserdialog.;//customfolderbrowserdialog.SelectedFolderPath();[/u] //hier hab ich mein Problem
        }


Wer kann mir weiterhelfen?

Grüße


Kha - Mo 03.11.08 14:42

Du solltest deinem Dialog eine public Property (ohne Setter) wie "SelectedPath" geben. Darin kannst du dann den Wert des TreeViews zurückgeben und auf die Property in der zweiten Klasse zugreifen.


Delete - Mo 03.11.08 14:49

Genau das habe ich versucht bin aber nicht weitergekommen.

Hab versucht über eine Methode


C#-Quelltext
1:
2:
3:
4:
public void SelectedPath()
{
  string pfad = treeview.selectednode.fullpath;
}


das zu realisieren aber ich glaub ich hab da was voll falsch gemacht.


JüTho - Mo 03.11.08 15:08

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Darin kannst du dann den Wert des TreeViews zurückgeben und auf die Property in der zweiten Klasse zugreifen.

Du gibst aber nichts zurück, siehe "void", und besetzt es nicht als Eigenschaft (Property), sondern als Methode. Du brauchst vor allem einen Rückgabewert! So wird ein Schuh draus:

C#-Quelltext
1:
2:
3:
4:
public string SelectedPath
{
    get { return treeview.selectednode.fullpath; }
}

Das zeigt nochmals: Grundlagen auch der OOP studieren! Jürgen

PS. Ob Du es als Eigenschaft oder als Methode regelst, ist nebensächlich. Da Du aber genau einen Wert haben willst, liegt Eigenschaft näher.


Delete - Mo 03.11.08 15:27

Hi, habs kurz bevor du deine Lösung gepostest hast es alleine hinbekommen, habs ein bisschen anders gemacht,

mach es jetzt mit

C#-Quelltext
1:
2:
3:
4:
5:
public string FolderPath()
        {
            string folder = triStateTreeView1.SelectedNode.FullPath;
            return folder;
        }


Funktioniert ebenfalls.

Grüße und Danke