Autor Beitrag
AlanWake
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Do 02.09.10 20:10 
Hallo Leute,

ich habe bei meiner Windows Form einen bindingNavigator1 und in dem eine toolStripComboBox1 hinzugefügt.

Jetzt habe ich folgendes Problem, wenn ich die Form breiter machen will oder ganz in den Vollbildmodus gehe passt die toolStripComboBox1 sich leider nicht der breite der Form an :(

Ich hatte es schon versucht mit,:

ausblenden C#-Quelltext
1:
this.toolStripComboBox1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Left;					


aber leider kann ich bei dieser Methode nur Left und Right angeben kein Center :(

Bin dankbar für jede Hilfe :)

gruß Alan
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: Do 02.09.10 20:17 
Hi Alan,

um auf die Größenänderungen zu reagieren verwendest Du die Anchor Eigenschaft im Designer.

Grüße,
CSMN
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Do 02.09.10 21:00 
Hi,

habe den Anchor Wert verändert, aber dann löst das Programm den bindingNavigator1 von Top zu none bei Dock :(

Der bindingNavigator1 muss bei mir aber Oben oder Unten angedockt sein :)

Gibt es da noch eine andere Möglichkeit :?:

gruß Alan
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: Do 02.09.10 21:16 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:


Gibt es da noch eine andere Möglichkeit :?:



Du kannst über das Event ResizeEnd gehen und in dem Handler die
Size Eigenschaft der toolStripComboBox1 anpassen.
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Do 02.09.10 21:40 
Ich habe es mit ResizeEnd und Resize versucht aber dann zieht das Programm die toolStripComboBox1 so breit das sie ausgeblendet wird :(

Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
        private void Form1_Resize(object sender, EventArgs e)
        {
            this.toolStripComboBox1.Size = this.Size;
        }


Gibt es sonst noch eine Möglichkeit :?:

gruß Alan

ps. Ich suche eigentlich etwas, wenn ich die Breite der Form verändere, das jedes mal wenn ich um +1 die Größe verändere, das +1 zur Breite der toolStripComboBox1 dazu gezählt wird :)
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 01:22 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe es mit ResizeEnd und Resize versucht aber dann zieht das Programm die toolStripComboBox1 so breit das sie ausgeblendet wird :(

Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
        private void Form1_Resize(object sender, EventArgs e)
        {
            this.toolStripComboBox1.Size = this.Size;
        }




na wenn du die größe der toolStripComboBox1 auf die größe der gesamten Form setzt, dann musst du dich nicht wundern dass sie ausgeblendet wird. du müsstest mit der differenz arbeiten, d.h. du bestimmmst am anfang die width der form und der combobox und bildest daraus die differenz dann wenn die form vergrößert wird machst du dass selbe spiel nochmal und addierst die differenz auf die width. und die size der combobox setzt du dann wie folgt:


ausblenden C#-Quelltext
1:
toolStripComboBox1.Size = new Size(newWidth, toolStripComboBox1.Size.Height);					


newWidth ist die von dir vorher bestimmte neue breite. Zu Deinen Kommentar: "ps. Ich suche eigentlich etwas, wenn ich die Breite der Form verändere, das jedes mal wenn ich um +1 die Größe verändere, das +1 zur Breite der toolStripComboBox1 dazu gezählt wird" - was bringt es dir wenn jemand die form maximiert und die breite um eins vergößert wird? und wenn ich es verkleinere wird es wieder um eins inkrementiert - ich glaub den gedanken hast du nicht zuende gedacht... würde ja heißen wenn jemand wie wild die form in der größe verändert würden wir theoretisch unendlich groß mit der combobox werden und realistisch irgendwann den integerwertebereich überlaufen...
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 04:50 
Hi,

also die Differenz zwischen Form und combobox soll 50 sein aber wie ich jetzt programmieren muss das das Programm immer diese Differenz einhält, also newWidth, da brauch ich ein Beispiel, sorry bin Anfänger :)

gruß Alan
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 07:09 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Hi,

also die Differenz zwischen Form und combobox soll 50 sein aber wie ich jetzt programmieren muss das das Programm immer diese Differenz einhält, also newWidth, da brauch ich ein Beispiel, sorry bin Anfänger :)

gruß Alan



na wie ermittelst du denn die beiden width werte(den der form und den der combobox)?

gruß
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 07:43 
Ich meinte den Abstand zwischen den beiden !
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 03.09.10 10:25 
Mit Anchor arbeiten (wie CSMN schon geschrieben hat) ist der richtige Weg:
ausblenden C#-Quelltext
1:
toolStripComboBox1.Anchor = AnchorStyles.Left | AnchorStyles.Right;					

Dies bedeutet, der Abstand zum linken und rechten Rand des Parents bleibt immer gleich (und dadurch vergrößert oder verkleinert sich das Control entsprechend).
Necaremus
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 203
Erhaltene Danke: 18

Win > XP, Vista, 7; Android 2.1
C# > VS '08,'10; Delphi7
BeitragVerfasst: Fr 03.09.10 13:45 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Mit Anchor arbeiten (wie CSMN schon geschrieben hat) ist der richtige Weg:
ausblenden C#-Quelltext
1:
toolStripComboBox1.Anchor = AnchorStyles.Left | AnchorStyles.Right;					

Dies bedeutet, der Abstand zum linken und rechten Rand des Parents bleibt immer gleich (und dadurch vergrößert oder verkleinert sich das Control entsprechend).

und evtl noch AnchorStyles.Top :p
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 18:51 
Hi Leute,

mit diesem Code bleibt zwar der bindingNavigator1 angedockt, nur leider wenn ich die Form nach rechts vergrößere, passiert nichts bei der toolStripComboBox1 :(

ausblenden C#-Quelltext
1:
2:
3:
4:
private void Form1_Resize(object sender, EventArgs e)
{
toolStripComboBox1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
}
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 19:34 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Hi Leute,

mit diesem Code bleibt zwar der bindingNavigator1 angedockt, nur leider wenn ich die Form nach rechts vergrößere, passiert nichts bei der toolStripComboBox1 :(

ausblenden C#-Quelltext
1:
2:
3:
4:
private void Form1_Resize(object sender, EventArgs e)
{
toolStripComboBox1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
}



Hi Alan,

platziere diesen Code bitte nicht im Resize Event sondern im Form Loading Event.

Grüße
CSMN

Edit: Habe das gerade ausprobiert, das funktioniert bei mir nicht. Muss was mit dem bindingNavigator1 zu tun haben, da der ja toolStripComboBox1 hostet. Auf die manuelle Art kann man die Größe jedoch anpassen, das klappt. Vielleicht ist auch jemanden eine schon vorhandene Lösung dafür bekannt?
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 19:57 
Habe es jetzt so gemacht:

ausblenden C#-Quelltext
1:
2:
3:
4:
        private void Form1_Load(object sender, EventArgs e)
        {
            toolStripComboBox1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
        }


aber es tut sich wieder nichts :cry:

gruß Alan

ps. @ CSMN: Beim Firefox passt das Programm ja auch die URL Textbox an, wenn ich die Größe verändere, wie machen die das :?:
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 20:13 
Ich habe die Lösung :)

ausblenden C#-Quelltext
1:
2:
3:
4:
        private void Form1_Resize(object sender, EventArgs e)
        {
            toolStripComboBox1.Size = new Size(this.Width -70, toolStripComboBox1.Size.Height);
        }


Mit diesem Code ist die Breiter der Form die selbe wie bei der ComboBox (also wird ComboBox ausgeblendet) und die - 70 ist immer der Abstand zwischen beiden :)

gruß Alan
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: Fr 03.09.10 22:28 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe die Lösung :)


8) ...
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Sa 04.09.10 01:18 
:D
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Sa 04.09.10 09:29 
Oder dynamischer, ohne hart einprogrammierten Wert:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
int defaultWidth = 0;
public Form1()
{
  InitializeComponent();
  defaultWidth = this.Width - toolStripComboBox1.Width;
  this.toolStripComboBox1.Width = this.Width - defaultWidth;
}

protected override void OnResize(EventArgs e)
{
  if (defaultWidth > 0)
    this.toolStripComboBox1.Width = this.Width - defaultWidth;
  base.OnResize(e);
}


//edit: kleinen Fehler im Code verändert

Die Autosize-Eigenschaft der ComboBox muss natürlich bei Anwendung auf false stehen.

Gruss, Marko