Autor Beitrag
_axel_
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 05.05.14 17:04 
Hallo EE-Gemeinde,

unter C# VS2010 stehe ich vor folgendem Problem:

aus meiner Form1 heraus möchte ich eine weitere Form2 öffnen. Die habe ich dem Projekt hinzu gefügt. Das sieht dann so aus und funktioniert.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
namespace GPU
{
    public partial class Form2 : Form
    {
        Point pos;

        public void SetPos(Point p)
        {
            pos = p;
        }
...
}

Zusätzliche habe ich die eingene Methode "public void SetPos(Point p)" vorgesehen.
Diese wird auch in der Klassenansicht dargestellt.

In Form1 habe ich eine Instanz der Form2 erzeugt:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
namespace GPU
{
    public partial class Form1 : Form
    {
        Form Graph = new Form2();

...
}
Wenn ich jetzt auf die öffentliche Methode SetPos() zurgreifen möchte, ist sie nicht sichtbar.
Graph.SetPos(..)

Warum nicht? Alle Methoden vom geerbten Form werden angeboten nur meine public Methode nicht.

Danke,
Axel
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 05.05.14 17:19 
Weil Graph selbst vom Typ Form ist (so von dir definiert) auch wenn da eine Instanz vom Typ Form2 dranhängt.
Wen du auf Form2 Sachen zugreifen willst benutze ein Variable vom Typ Form2 bzw. caste die Variable auf Form2 bevor du auf Dinge die nur Form2 kennen kann zugreifen willst.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 06.05.14 10:27 
Daher der gute Rat: gleich von Anfang an die Klassen (und auch darin enthaltenenen Controls) gleich richtig benennen, z.B. MainForm, PositionForm, etc.
_axel_ Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 06.05.14 11:11 
@Ralf: wie gut, dass du keine Tomaten auf den Augen hattest, wie ich. Nachdem ich den Typ für Graph von "Form" auf "Form2" geändert hatte war auch meine Methode "SetPos()" sichtbar. Logisch :)

@Th69: Dein Hinweis ist berechtigt. Wahrscheinlich wäre es mir mit guter Benennung eher aufgefallen.

Danke euch Beiden!