Autor Beitrag
mbuettner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Fr 05.03.10 14:51 
Hallo,

ich lese per FileReader eine Datei aus, der Inhalt wird in der Console auch wiedergegeben, allerdings erscheint nichts im Programmfenster. Es kann nicht daran liegen, dass dr FileReader nicht geschlossen wurde, denn ich habe beides versucht.
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;

namespace Fenster{
  public class SteuerelementeForm : Form 
  {
    public string username, notendatei;
    public string pfad;
    
    public SteuerelementeForm(){
      Name = "NotenForm";
      Text = "Notenplaner (OpenSource)";
      Font = new Font("Courier New"10F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0)));
      FormBorderStyle = FormBorderStyle.FixedDialog;
      Location = new Point(0,0);
      Size = new Size(800,600);
      mainmenu();
    }    
    public static void Main(){ //Start Main
      string username;
      if(File.Exists("noten.ini"))
      {
        try{    
          Application.Run(new SteuerelementeForm());
        }catch(Exception ex){
          MessageBox.Show(ex.Message);
        }
      }else{
        try{
          Console.Write("Dein Name: ");
          username = Console.ReadLine();
          StreamWriter sw = new StreamWriter(@"noten.ini");
          sw.WriteLine(Application.StartupPath + "\\" + username);
          sw.Close();
          File.Create(username + ".npd"1024);
          Application.Run(new SteuerelementeForm());
        }catch(Exception e){
          MessageBox.Show(e.Message);
        }
      }
    } // End Main
    private MainMenu menu;
    private MenuItem exit, save;
    
    private void mainmenu()
    {
      menu = new MainMenu();
      exit = new MenuItem();
      save = new MenuItem();
      
      exit.Index = 1;
      exit.Text = "Beenden";
      exit.Click += new EventHandler(beenden_Click);   
      save.Index = 0;
      save.Text = "Speichern";
      save.Click += new EventHandler(speichern);
      
      notenplaner();

      menu.MenuItems.Add(save);      
      menu.MenuItems.Add(exit);
      Menu = menu;
    }//End Menu;
    private void beenden_Click(object sender, EventArgs e)
    {
      Close();
    }
    private TabControl tabcontrol;
    private TabPage panel1;
    private TabPage panel2;
    private Label faecher, faecher2;
    private Label art, art2;
    private Label sa;
    private TextBox sae, sae1, sae2, sae3;
    private void notenplaner()//Für die Tabs und Notenanzeige und -bearbeitung
    {
      tabcontrol = new TabControl();
      panel1 = new TabPage();
      panel2 = new TabPage();
      faecher = new Label();faecher2 = new Label();
      art = new Label();art2 = new Label();
      sa = new Label();
      sae = new TextBox();sae1 = new TextBox();sae2 = new TextBox();sae3 = new TextBox();
      StreamReader ini = new StreamReader(@"noten.ini");
      username = ini.ReadToEnd();
      if(username == "")
      {
        MessageBox.Show("Fehler beim lesen der Einstellungen. Bitte *.npd und *.ini löschen!");
        Close();
        Console.ReadLine();
      }
      string pfad = username;
      Console.Write(pfad);
      StreamReader npd = new StreamReader(@pfad);
      string inhalt = npd.ReadToEnd();
      npd.Close();
      Console.Write(inhalt);
      
      tabcontrol.Size = new Size(770,500);
      sae.Location = new Point(90,28);
      sae.Size = new Size (25,20);
      sae.Text = "";
      sae1.Location = new Point(120,28);
      sae1.Size = new Size (25,20);
      sae1.Text = "";
      sae2.Location = new Point(150,28);
      sae2.Size = new Size (25,20);
      sae2.Text = "";
      sae3.Location = new Point(180,28);
      sae3.Size = new Size (25,20);
      sae3.Text = "";
            
      panel1.Location = new Point(10,10);
      panel1.Size = new Size(80,80);
      panel1.Text = "Noten";
      panel2.Location = new Point(90,10);
      panel2.Size = new Size(80,80);
      panel2.Text = "Bearbeiten";
      
      faecher.Name = "Fächer";
      faecher.Text = "Fach\n----------\nDeutsch\n----------\nEnglisch\n----------\nMathe\n----------\nPhysik\n----------\nGeschichte\n----------\nErdkunde\n----------\nReligion\n----------\nIT\n----------\nBiologie\n----------\nMusik\n----------\nKunst\n----------\nSport\n----------\n";
      faecher.Size = new Size(400,800);
      faecher2.Name = "Fächer";
      faecher2.Text = "Fach\n----------\nDeutsch\n----------\nEnglisch\n----------\nMathe\n----------\nPhysik\n----------\nGeschichte\n----------\nErdkunde\n----------\nReligion\n----------\nIT\n----------\nBiologie\n----------\nMusik\n----------\nKunst\n----------\nSport\n----------\n";
      faecher2.Size = new Size(400,800);
      art.Name="Fachart";
      art.Text = "Schulaufgaben | Stegreifaufgaben | Mündliche Noten | Durchschnitt | Note";
      art.Location = new Point(90,0);
      art.Size = new Size(80020);
      art2.Name="Fachart";
      art2.Text = "Schulaufgaben | Stegreifaufgaben | Mündliche Noten | Durchschnitt | Note";
      art2.Location = new Point(90,0);
      art2.Size = new Size(80020);
      sa.Location = new Point(90,40);
      sa.Size = new Size(200700);
      sa.Text = inhalt;
      
      Controls.Add(tabcontrol);
      tabcontrol.Controls.Add(panel1);
      tabcontrol.Controls.Add(panel2);
      panel1.Controls.Add(art);
      panel1.Controls.Add(faecher);
      panel2.Controls.Add(sae);panel2.Controls.Add(sae1); panel2.Controls.Add(sae2);panel2.Controls.Add(sae3);
      panel2.Controls.Add(art2);
      panel2.Controls.Add(faecher2);  
    }
    //Um die Noten im Notenplaner zu speichern
    private void speichern(object sender, EventArgs e)
    {
      string text;
      text = sae.Text + " " + sae1.Text + " " + sae2.Text + " " + sae3.Text;
      StreamWriter npd = new StreamWriter(@username);
      npd.Write(text);
      npd.Close();
    }
  }
}
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 05.03.10 15:10 
Hallo,

Zitat:
allerdings erscheint nichts im Programmfenster.

Du meinst im SteuerelementeForm? Was soll denn dort erscheinen? Wenn du Main und den Konstruktor durchgehst, wird mainmenu aufgerufen, also das Menu und von dort aus das TabControl erstellt.

Wird das TabControl nicht angezeigt? Dann drehe die Reihenfolge um: zuerst panel1.Controls.Add, dann tabcontrol.Controls.Add(panel1), erst zum Schluss Controls.Add(tabcontrol).

Wird der Inhalt nicht angezeigt? Ich kann nicht sehen, dass das Label sa irgendwo per Controls.Add eingebunden wird.

Empfehlung: Trenne das Erstellen der Controls und mache es vorzugsweise genauso wie der Designer. Musst du unbedingt noch mit 1.1 arbeiten? Mit 2.x und höher wird dies durch partial class erheblich erleichtert. Das Einlesen und Anzeigen des Textes sollte in eigene Methoden ausgelagert werden; dann wird alles erheblich übersichtlicher.

Nebenbei solltest du .NET Richtlinien für Namen beachten; das erleichtert das Verständnis.

Gruß Jürgen
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: Fr 05.03.10 15:12 
Du speicherst den Text (inhalt) zwar in sa.Text, zeigst aber das Label 'sa' gar noicht an, d.h. es fehlt ein Control.Add(sa).

Generell ist dein Programm aber sehr unübersichtlich. Du solltest dringend dein Programm in geeignete Methoden unterteilen (z.B. Datei einlesen, GUI Controls erzeugen etc.)

Ups: JüTho war schneller...
mbuettner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Fr 05.03.10 16:19 
Hallo,

Controls.Add eingefügt, trotzdem das gleiche Ergebnis. Zu deiner Frage zur Frameworkversion: Ja, ich muss mit 1.1 arbeiten, da der Computer, an dem ich arbeite, nur Framework 1.1 drauf hat. Bei den Computer, wo ich normalerweise arbeite, ist Framework 2.0 drauf, aber da spinnt im Moment die Maus. (entweder die Erscheint nicht oder die lässt sich nur auf und ab bewegen)
E:\ Ich habe mal versucht, bestimmte Funktionen in eine Klasse auszulagern, aber immer wenn ich von der Hauptklasse in eine Variable aus der Funktionenklasse zugreifen will, kommt nur: Der Name 'inhalt' besteht nicht in der Klasse oder dem Namespace 'Fenster', was auch irgendwie verständlich ist. Wie kann ich aber trotzdem auf die Varible zugreifen?
mbuettner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 2000
C#, Plainedit; PHP, Weaverslave
BeitragVerfasst: Sa 06.03.10 13:32 
Hallo,

das mit den Funktionen hab ich jetzt hinbekommen, aber jetzt wird immer nur der Inhalt der INI Datei ausgelesen.
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;

namespace Fenster{
  public class SteuerelementeForm : Form
  {
    public string username, notendatei;
    public string pfad;
    public static string inhalt;
    
    public SteuerelementeForm(){
      Name = "NotenForm";
      Text = "Notenplaner (OpenSource)";
      Font = new Font("Courier New"10F, (FontStyle.Bold), GraphicsUnit.Point, ((System.Byte)(0)));
      FormBorderStyle = FormBorderStyle.FixedDialog;
      Location = new Point(0,0);
      Size = new Size(800,600);
      mainmenu();
    }    
    public static void Main(){ //Start Main
      string username;
      if(File.Exists("noten.ini"))
      {
        try{    
          Application.Run(new SteuerelementeForm());
        }catch(Exception ex){
          MessageBox.Show(ex.Message);
        }
      }else{
        try{
          Console.Write("Dein Name: ");
          username = Console.ReadLine();
          StreamWriter sw = new StreamWriter(@"noten.ini");
          sw.WriteLine(Application.StartupPath + "\\" + username);
          sw.Close();
          File.Create(username + ".npd"1024);
          Application.Run(new SteuerelementeForm());
        }catch(Exception e){
          MessageBox.Show(e.Message);
        }
      }
    } // End Main
    private MainMenu menu;
    private MenuItem exit, save;
    
    private void mainmenu()
    {
      menu = new MainMenu();
      exit = new MenuItem();
      save = new MenuItem();
      
      exit.Index = 1;
      exit.Text = "Beenden";
      exit.Click += new EventHandler(beenden_Click);   
      save.Index = 0;
      save.Text = "Speichern";
      save.Click += new EventHandler(speichern);
      
      notenplaner();

      menu.MenuItems.Add(save);      
      menu.MenuItems.Add(exit);
      Menu = menu;
    }//End Menu;
    private void beenden_Click(object sender, EventArgs e)
    {
      Close();
    }
    private TabControl tabcontrol;
    private TabPage panel1;
    private TabPage panel2;
    private Label faecher, faecher2;
    private Label art, art2;
    private Label sa;
    private TextBox sae, sae1, sae2, sae3;
    private void notenplaner()//Für die Tabs und Notenanzeige und -bearbeitung
    {
      tabcontrol = new TabControl();
      panel1 = new TabPage();
      panel2 = new TabPage();
      faecher = new Label();faecher2 = new Label();
      art = new Label();art2 = new Label();
      sa = new Label();
      sae = new TextBox();sae1 = new TextBox();sae2 = new TextBox();sae3 = new TextBox();
      StreamReader ini = new StreamReader(@"noten.ini");
      username = ini.ReadLine();
      if(username == "")
      {
        MessageBox.Show("Fehler beim lesen der Einstellungen. Bitte *.npd und *.ini löschen!");
        Close();
        Console.ReadLine();
      }
      string pfad = username;
      Console.Write(pfad);
      funktionen funkt = new funktionen();
      funkt.inhalt_lesen(pfad, 1);
      
      tabcontrol.Size = new Size(770,500);
      sae.Location = new Point(90,28);
      sae.Size = new Size (25,20);
      sae.Text = "";
      sae1.Location = new Point(120,28);
      sae1.Size = new Size (25,20);
      sae1.Text = "";
      sae2.Location = new Point(150,28);
      sae2.Size = new Size (25,20);
      sae2.Text = "";
      sae3.Location = new Point(180,28);
      sae3.Size = new Size (25,20);
      sae3.Text = "";
            
      panel1.Location = new Point(10,10);
      panel1.Size = new Size(80,80);
      panel1.Text = "Noten";
      panel2.Location = new Point(90,10);
      panel2.Size = new Size(80,80);
      panel2.Text = "Bearbeiten";
      
      faecher.Name = "Fächer";
      faecher.Text = "Fach\n----------\nDeutsch\n----------\nEnglisch\n----------\nMathe\n----------\nPhysik\n----------\nGeschichte\n----------\nErdkunde\n----------\nReligion\n----------\nIT\n----------\nBiologie\n----------\nMusik\n----------\nKunst\n----------\nSport\n----------\n";
      faecher.Size = new Size(400,800);
      faecher2.Name = "Fächer";
      faecher2.Text = "Fach\n----------\nDeutsch\n----------\nEnglisch\n----------\nMathe\n----------\nPhysik\n----------\nGeschichte\n----------\nErdkunde\n----------\nReligion\n----------\nIT\n----------\nBiologie\n----------\nMusik\n----------\nKunst\n----------\nSport\n----------\n";
      faecher2.Size = new Size(400,800);
      art.Name="Fachart";
      art.Text = "Schulaufgaben | Stegreifaufgaben | Mündliche Noten | Durchschnitt | Note";
      art.Location = new Point(90,0);
      art.Size = new Size(80020);
      art2.Name="Fachart";
      art2.Text = "Schulaufgaben | Stegreifaufgaben | Mündliche Noten | Durchschnitt | Note";
      art2.Location = new Point(90,0);
      art2.Size = new Size(80020);
      sa.Location = new Point(90,40);
      sa.Size = new Size(200700);
      sa.Text = inhalt;
      
      Controls.Add(tabcontrol);
      tabcontrol.Controls.Add(panel1);
      tabcontrol.Controls.Add(panel2);
      panel1.Controls.Add(art);
      panel1.Controls.Add(faecher);
      panel1.Controls.Add(sa);
      panel2.Controls.Add(sae);panel2.Controls.Add(sae1); panel2.Controls.Add(sae2);panel2.Controls.Add(sae3);
      panel2.Controls.Add(art2);
      panel2.Controls.Add(faecher2);  
    }
    //Um die Noten im Notenplaner zu speichern
    private void speichern(object sender, EventArgs e)
    {
      string text;
      text = sae.Text + " " + sae1.Text + " " + sae2.Text + " " + sae3.Text;
      StreamWriter npd = new StreamWriter(@username);
      npd.Write(text);
      npd.Close();
    }
  }
  class funktionen : SteuerelementeForm{// Funktionen für das Programm
    public void inhalt_lesen(string datei, int mode)
    {
      /*"alles lesen" = 1 *\
      \*"eine Zeile " = 2 */

      StreamReader sr = new StreamReader(@datei);
      if(mode == 1){
        inhalt = sr.ReadToEnd();
        sr.Close();
      }else{
        inhalt = sr.ReadLine();
        sr.Close();
      }
    }
  } 
}
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 06.03.10 17:59 
Ich glaube, jetzt fehlt "inhalt = ...". Das kommt davon, wenn das Programm unübersichtlich ist (und das ist es nach wie vor). Jürgen

PS. In C# spricht man von "Methoden", nicht von "Funktionen".