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



BeitragVerfasst: Sa 09.01.16 13:06 
Hallo Liebe Entwickler Gemeinde :) ich und meine Klassenkameradin müssen ein Projekt Realisieren. Wir wollen in unserer Hauptform 3 Buttons ausblenden die wir mit visible=false gesetzt haben. Das Funktioniert aber nicht so wie es soll. Wir haben schon im Internet gesucht und nichts gefunden wir würden uns über jede Hilfe von euch Freuen. Hier unser Code:

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:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Projekt2
{
    public partial class HauptfensterH1 : Form
    {
        bool mitarbeiter1;

        public HauptfensterH1(bool mitarbeiter)
        {
            InitializeComponent();
            mitarbeiter1 = mitarbeiter;                
        }
         
        Datenbank db = new Datenbank();
        DataSet ds = null;
        Helper hp = new Helper();
        
        private void HauptfensterH1_Load(object sender, EventArgs e)
        {
            try
            {
                if (mitarbeiter1==false)
                {
                    Mitarbeiterverwaltung.Visible = false;
                    Kunden_Ansprechpartnerverwaltung.Visible = false;
                    Produktverwaltung.Visible = false;
                }
            }
            catch (Exception a)
            {
                MessageBox.Show("Hide Buttons Fehler" + a);
            }
            
            try
            {
                Ticketview.ReadOnly = true;
                Ticketview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

                Eingangsview.ReadOnly = true;
                Eingangsview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

                Ausgangsview.ReadOnly = true;
                Ausgangsview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            }
            catch (Exception a)
            {
                MessageBox.Show("SelectFullrow In Datagridviewfehler" + a);
            }

            try
            {
                string sql = "Select* from Ticket";
                ds.Clear();
               
                ds = db.dataset(sql);

                Ticketview.DataSource = ds;
                Ticketview.DataMember = "inhalt";
            }
            catch (Exception a)
            {
                MessageBox.Show("Ticketview füllen Fehler" + a);
            }
        }

        private void EmailsAnzeigen_Click(object sender, EventArgs e)
        {
            try
            {
                if (Ticketview.SelectedRows.Count == 1)
                {
                    string tempTicketNr = Ticketview.SelectedRows[0].Cells[0].Value.ToString();

                    string sql = "Select* from Eingang where Eingangs_TicketNr='" + tempTicketNr + "'";
                    ds.Clear();
                    
                    ds = db.dataset(sql);

                    Eingangsview.DataSource = ds;
                    Eingangsview.DataMember = "inhalt";

                    sql = "Select* from Ausgang where Ausgangs_TicketNr='" + tempTicketNr + "'";
                    ds.Clear();
                    
                    ds = db.dataset(sql);

                    Ausgangsview.DataSource = ds;
                    Ausgangsview.DataMember = "inhalt";
                }
                else if (Ticketview.SelectedRows.Count > 1)
                {
                    MessageBox.Show("Bitte nur ein Ticket auf einmal Auswählen ^_^");
                }
            }
            catch (Exception a)
            {
                MessageBox.Show("Eingangsview und Ausgangsview füllen" + a);
            }
        }

        //Abmelden
        private void ThisClose_Click(object sender, EventArgs e)
        {
            try
            {
                Form Login = new Login();
                Login.Show();
                this.Hide();
               
                MessageBox.Show("Sie haben sich Erfolgreich Abgemeldet");
            }
            catch (Exception a)
            {
                MessageBox.Show("Logout in Fehlgeschlagen" + a);
            }
        }

        private void Mitarbeiterverwaltung_Click(object sender, EventArgs e)
        {
            Form Mitarbeiterverwaltung = new MitarbeiterverwaltungH2();
            Mitarbeiterverwaltung.Show();
            this.Hide(); 
        }

        private void Kunden_Ansprechpartnerverwaltung_Click(object sender, EventArgs e)
        {
            Form Kunden_Ansprechpartnerverwaltung = new Kunden_AnsprechparnterverwaltungH2();
            Kunden_Ansprechpartnerverwaltung.Show();
            this.Hide();
        }

        private void Produktverwaltung_Click(object sender, EventArgs e)
        {
            Form Produktverwaltung = new ProduktverwaltungH2();
            Produktverwaltung.Show();
            this.Hide();
        }

        private void TicketErstellen_Click(object sender, EventArgs e)
        {
            Form TicketErstellen_Click = new TicketErstellenH1N1();
            TicketErstellen_Click.Show();
            this.Hide();            
        }

        private void TicketBearbeiten_Click(object sender, EventArgs e)
        {
            Form TicketBearbeiten = new TicketBearbeitenH1N1();
            TicketBearbeiten.Show();
            this.Hide();
        }

        private void TickeLöschen_Click(object sender, EventArgs e)
        {
            Form TicketLöschen = new TicketLöschenH1N1();
            TicketLöschen.Show();
            this.Hide();
        }

        private void EmailAbrufen_Click(object sender, EventArgs e)
        {
            Form EmailAbrufen = new EmailAbrufenH1N2();
            EmailAbrufen.Show();
            this.Hide();
        }

        private void SendenMail_Click(object sender, EventArgs e)
        {
            Form SendenMail = new EmailSendenH1N2();
            SendenMail.Show();
            this.Hide();
        }

        private void LöschenMail_Click(object sender, EventArgs e)
        {
            //Rechtschreibfehler 
            Form LöschenMail = new EmailLöschenHiN2();
            LöschenMail.Show();
            this.Hide();
        }

        private void Lösungsverwaltung_Click(object sender, EventArgs e)
        {
            Form Lösungsverwaltung = new LösungsverwaltungH3();
            Lösungsverwaltung.Show();
            this.Hide();            
        }

        private void Problemverwaltung_Click(object sender, EventArgs e)
        {
            Form Problemverwaltung = new ProblemverwaltungH3();
            Problemverwaltung.Show();
            this.Hide();
        }

        private void Beenden_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}


Danke schon mal im voraus :)

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Titel geändert (war "C# Buttons Ausblenden".
Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet: unnötige Leerzeilen im Code entfernt.
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: Sa 09.01.16 14:15 
Bist du eine Klassenkameradin von ihm/ihr hier. Soll kein Stalking sein ich will nur wissen ob die Datenbank Klasse in etwa diejenige ist die dort gezeigt wird ;) Es wäre schon ziemlicher Zufall wenn 2 Personen kurz nacheinander die gleiche Benennung und Methodensignatur benutzen würden.

Du gehst leider nicht genau darauf ein was/wie nicht richtig funktioniert ich geh mal auf das Problem ein das ich im geposteten Code sehe und zum Umfeld der 3 Buttons gehört. Es muß aber kein Problem sein da ich den ganzen Context der Anwendung natürlich nicht kenne. Wenn das nix mit dem Problem zu tun hat beschreib doch bite genauer was da genau wie nicht funktioniert.

Zitat:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
if (mitarbeiter1==false)
{
    Mitarbeiterverwaltung.Visible = false;
    Kunden_Ansprechpartnerverwaltung.Visible = false;
    Produktverwaltung.Visible = false;
}


Bedeutet das du die Buttons nur ausblendest aber nie ein. Je nachdem wie die Form voreingestellt ist willst du aber eigentlich eher ein- anstatt ausblenden.
Es wäre wohl besser immer das Visible Flag zu setzen dann funktioniert ein und ausblenden gleichermassen. Da mitarbeiter1 bereits ein boolean ist brauchst du auch nicht mit einer boolean Konstante zu vergleichen um dann einen boolean zu setzen zuweisen reicht.

ausblenden C#-Quelltext
1:
2:
3:
Mitarbeiterverwaltung.Visible = mitarbeiter1; // mitarbeiter1 ist entweder true oder false ich kann das also direkt zuweisen um visible auf true/false zu setzen.
Kunden_Ansprechpartnerverwaltung.Visible = mitarbeiter1;
Produktverwaltung.Visible = mitarbeiter1;


Die Exceptionbehandlung an der Stelle ist auch problematisch. Der Load Event tritt während dem anzeigen der Form auf.Während heißt der ist noch nicht angezeigt aber auch nicht mehr so richtig nicht angezeigt ist ;) Wenn man in dem Event also noch eine andere Form anzeigt (euren MessageBox.Show) bringt man das System gehörig durcheinander und Windows bekommt es möglicherweise nicht mehr hin Fenster in der richtigen Reihenfolge (Z-Order) anzuzeigen. Heißt die sich gerade öffnen Form wird möglicherweise plötzlich im Hintergrund geöffnet hinter anderen gerade angezeigten Fenstern. Der Code sollte eher nicht in den Load Event. Ich würde euch raten das direkt im Constructor zu machen nach dem Aufruf von InitializeComponent(). Die mitarbeiter1 Variable braucht ihr dann vermutlich nicht mehr ihr habt ja da denn mitarbeiter Parameter zur Verfügung. Sonstige Alternative für den Load Event wäre der Shown Event. Da ist die Form bereits angezeigt und es kann weniger schief gehen.

Für diesen Beitrag haben gedankt: MissUndercover
MissUndercover Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 09.01.16 17:43 
Vielen Dank für die schnelle Antwort. Ja ich bin die Klassenkameradin von der Person, sie hat mir einen Link von der seite geschickt weil sie schlafen gegangen ist und ich dann weitermachen wollte. Habe dann aber hilfe gebraucht und dachte mir ich kann hier ja auch was posten :D.
Nochmals vielen Dank deine Antwort war sehr Hilfreich.