Laden...
M
MacWale myCSharp.de - Member
Software Entwickler Deutschland Dabei seit 22.05.2008 37 Beiträge
Benutzerbeschreibung

Forenbeiträge von MacWale Ingesamt 37 Beiträge

03.08.2010 - 19:33 Uhr

Hallo,

ich möchte eine eigenes WPF UserControl erstellen.

Grundsätzlich möchte ich dieses eine Listbox sein, welche einen Header hat.

Die XAML sieht wie folgt aus:

<ListBox x:Class="SListBox"
            >
    <ListBox.Template>
        <ControlTemplate>
            <Border BorderThickness="1" BorderBrush="Brown"  CornerRadius="10">
                <Grid Margin="5">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"></RowDefinition>
                        <RowDefinition Height="*"></RowDefinition>
                    </Grid.RowDefinitions>
                    <Label Content="{Binding Path=Header}"  Grid.Row="0" Name="lblHeader"></Label>
                    <VirtualizingStackPanel Margin="5" IsItemsHost="True" Grid.Row="1" />
                </Grid>
            </Border>
        </ControlTemplate>
    </ListBox.Template>
</ListBox>

Code Behind:


public partial class SListBox : ListBox
    {

        public string Header
        {
            get { return base.GetValue(HeaderProperty) as string; }
            set { base.SetValue(HeaderProperty, value); }
        }
        public static readonly DependencyProperty HeaderProperty =
          DependencyProperty.Register("Header", typeof(string), typeof(SListBox)); 

    }

Leider bekomme ich nicht mein gewünschtes Ergebnis, bzw genauer gesagt der Header wird nicht angezeigt.

Hat jemand eine Idee, woran das liegen könnte??

Vielen Dank für Tipps!

Gruß
MacWale

07.05.2010 - 14:22 Uhr

ja der ist wirklich grauenhaft...ich weiß.

Ist auch nur durchs testen und probieren enstanden.

Er springt mir noch nicht mal in die Methode

private void cmdSpielStart_Click(object sender, RoutedEventArgs e)

hinein.

Die Exception tritt schon beim Laden des Formulars auf, bzw beim Laden des DataTemplates.

07.05.2010 - 13:14 Uhr

Die FAQ hab ich schon durch.

Das komische ist, dass die Exception beim rausnehmen des Events nicht geworfen wird.

Gruß
MacWale

07.05.2010 - 12:22 Uhr

Hallo

ich habe ein ResourceDictionary:

public partial class ResourceRunden : ResourceDictionary
    {
        public ResourceRunden()
            : base()
        {
            InitializeComponent();
        }

        private void cmdSpielStart_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                TurnierSpiel sp = (e.OriginalSource as FrameworkElement).DataContext as TurnierSpiel;
                if (sp != null)
                {
                    sp.SpielStart();
                }
            }
            catch (Exception ex)
            {
                //throw ex;
            }
           

        }
      
        
    }

Dazu folgender XAML:


<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    
        xmlns:turnier="clr-namespace:TurnierPlaner.Plan;assembly=TurnierPlaner.Plan"
       
                    x:Class="ViewTurnierRunde.ResourceRunden"
                    >
<DataTemplate x:Key="RundenArt0" DataType="TurnierRunde">
        <Grid>
            //.....//
 <ItemsControl>
 <ItemsControl.ItemTemplate>
  <DataTemplate>
   <Button Name="cmdSpielStart"  Margin="2" Click="cmdSpielStart_Click"  >
       <Image Source="pack://application:,,,/SS.System.ImageLibary;Component/Actions/PlayHS.png"  Height="16" Width="16"></Image>
    </Button>
   </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>
                                                ///
    </DataTemplate>
</ResourceDictionary>

Beim Button


<ItemsControl>
 <ItemsControl.ItemTemplate>
  <DataTemplate>
   <Button Name="cmdSpielStart"  Margin="2" Click="cmdSpielStart_Click"  >
       <Image Source="pack://application:,,,/SS.System.ImageLibary;Component/Actions/PlayHS.png"  Height="16" Width="16"></Image>
    </Button>
   </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

wird mir immer folgende Exception geworfen:

System.NullReferenceException wurde nicht behandelt.
Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Source=ViewTurnierRunde
StackTrace:
bei ViewTurnierRunde.ResourceRunden.System.Windows.Markup.IStyleConnector.Connect(Int32 connectionId, Object target) in d:\Kopie von Sourcen\DOT_NET\TunierPlaner\ViewTurnierRunde\ResourceRunden.xaml:Zeile 482.

Was kann ich tun..ich sehe da keinen Fehler? Sobald ich das Click Event rausnehme alles wunderbar, nur nicht so wie ich es haben will 😉

Vielen Dank für jeden Tipp!!

Gruß
MacWale

PS: Habe den Source auf das nötigeste gekürzt

04.04.2010 - 16:30 Uhr

Hallo,

ich möchte Items in einem Itemcontrol durchnummerieren, bzw ich würde gerne den ListIndex + 1 auf dem Formular angezeigt haben. Ist das überhaupt möglich?


<GroupBox Header="{Binding Path=Bezeichnung}" Margin="5">
                                <ItemsControl   HorizontalContentAlignment="Stretch"  Margin="5"  DataContext="{Binding Path=Objekt}" ItemsSource="{Binding}"  >
                                    <ItemsControl.ItemTemplate >
                                        <DataTemplate >
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="20"></ColumnDefinition>
                                                    <ColumnDefinition Width="200"></ColumnDefinition>
                                                </Grid.ColumnDefinitions>
                                                <Label Grid.Column="0" Content="x."></Label>
                                                <TextBox Text="{Binding Path=Bezeichnung}" Grid.Column="1" Margin="1"></TextBox>
                                            </Grid>
                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>
                            </GroupBox>

Vielen Dank schonmal für Tipps!

Gruß
MacWale

04.04.2010 - 10:29 Uhr

Hallo, ich habe es lösen können:

Hier die Lösung:

<ItemsControl HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" DataContext="{Binding Path=Gruppen}" ItemsSource="{Binding}">
                    <ItemsControl.ItemsPanel >
                        <ItemsPanelTemplate>
                            <WrapPanel IsItemsHost="True"></WrapPanel>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>

Gruß MacWale

PS Frohe Ostern!!

03.04.2010 - 23:33 Uhr

Guten Abend zusammen.

Ich habe eine Listview mit vielen Items, ich möchte nun diese Listeview wegen der Übersicht in 2 Spalten aufteilen.

Mir fehlt gerade der Anhaltspunkt wie ich das lösen könnte.

Danke schonmal für jeden Tipp/Hilfe etc.

Gruß
MacWale

26.10.2009 - 08:42 Uhr

Hallo,

ich schreibe gerade ein Addin für ein Programm. Ich habe eine Vorlage in VB.NET, welche auch super funktioniert! Ich entwickel nun das ganze in C# nach, sieht soweit ganz gut aus, bis auf ein paar Funktionen von dem System.__ComObject, z.Bsp. folgende:

Public Function RequestData_(ByVal ptDateFrom As String, 

ByVal ptDateTil As String, ByRef ptDataString As Variant, 

ByRef plNumberOfRecords As Long, ByRef ptError As Variant, Optional

ByVal ptTypeFilter As String = "") As Boolean


Aufrufen tue ich die Funktion wie folgt:

return (bool)MyComObject.InvokeFunction("RequestData_", new Object[] { ptDateFrom, ptDateUntil, ptDataString, plNumberOfRecords, ptError ,""});

Lt. Beschreibung sind die Parameter als ByRef definiert, in denen Werte zurückgegeben werden, welche ich für den weiteren Programmablauf benötige. Wie komme ich an diese Werte??

MyComObject ist folgendes:
Allgemeiner COM-Wrapper für Späte Bindung

Vielen Dank im Vorraus!

Gruß
MacWale

25.10.2009 - 11:48 Uhr

Hey super klasse...

ich schreibe gerade ein Addin für ein Programm. Ich hatte eine Vorlage in VB.NET, welche auch super funktioniert! Ich entwickel nun das ganze in C# nach, sieht soweit ganz gut aus, bis auf ein paar Funktionen von dem System.__ComObject, z.Bsp. folgende:

Public Function RequestData_(ByVal ptDateFrom As String, 

ByVal ptDateTil As String, ByRef ptDataString As Variant, 

ByRef plNumberOfRecords As Long, ByRef ptError As Variant, Optional

ByVal ptTypeFilter As String = "") As Boolean


Aufrufen tue ich die Funktion wie folgt:

return (bool)MyComObject.InvokeFunction("RequestData_", new Object[] { ptDateFrom, ptDateUntil, ptDataString, plNumberOfRecords, ptError ,""});

Lt. Beschreibung sind die Parameter als ByRef definiert, in denen Werte zurückgegeben werden, welche ich für den weiteren Programmablauf benötige. Wie komme ich an diese Werte??

Vielen Dank im Vorraus!

Gruß
MacWale

21.07.2009 - 15:39 Uhr

DataContext ist gesetzt auf eine DataTable

cboKontakt.DataContext = dt;

In dieser DataTable sind alle Kontakte, die GUID ist der eindeutige Key des Kontaktes.

21.07.2009 - 13:58 Uhr

meinst du das?

  
this.comboBox1.SelectedIndex = 1;  
  

(nullbasierend)

Ja fast...Das es so funktioniert ist mir klar. Ich will aber nicht das erste zweite oder dritte Item vorauswählen, sondern ein bestimmtes. Ich habe die GUID an der Hand und will das Item mit der GUID auswählen.
Erster Gedanke ist halt comboBox1.SelectedItem = guid, aber das geht nicht

20.07.2009 - 20:15 Uhr

Hallo,

ich habe eine ComboBox mit Kontakten:



<DataTemplate x:Key="KontaktTemplate"  >
            
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="40"></ColumnDefinition>
                    <ColumnDefinition Width="*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Image Grid.Column="0" Source="Icons/kontakt.png" Height="32" Width="32" Margin="2"/>
                <StackPanel Grid.Column="1" >
                    <!--<Grid.RowDefinitions>
                        <RowDefinition Height="25"></RowDefinition>
                        <RowDefinition Height="25"></RowDefinition>
                    </Grid.RowDefinitions>-->
                    <TextBlock Grid.Row="0"  FontSize="12" Text="{Binding Path=BEZEICHNUNG}" Foreground="Black" ></TextBlock>
                    <TextBlock Grid.Row="1" FontSize="10" Text="{Binding Path=FIRMA}" Foreground="Black"></TextBlock>
                </StackPanel>
            </Grid>
        </DataTemplate>
<ComboBox Grid.Column="1" Grid.Row="4" Margin="1,1,1,1" Name="cboKontakt" ItemsSource="{Binding}" ItemTemplate="{StaticResource ResourceKey=KontaktTemplate}" SelectionChanged="cboKontakt_SelectionChanged" ></ComboBox>

private void fillKontakte(string guid)
        {
            string sql = "Select guid, bezeichnung, firma from kontakt order by Bezeichnung";
            DataTable dt = DataProvider.GetDataTable(sql, ConnectionString);
            cboKontakt.SelectedValue = "guid";
            cboKontakt.DataContext = dt;

            
        }

Soweit klappt alles, doch wie wähle ich ein bestimmten Kontakt in der Vorauswahl aus. Theoretisch müsste ich ja SelectedItem setzen, jedoch was setze ich hier? Die guid zu setzen alleine reicht nicht.

Für Tipps bin ich dankbar!

Danke im Vorraus!

29.06.2009 - 20:08 Uhr

Hallo,

ich weiß nicht woran es liegt, dass in der folgenden Listview keine Daten angezeigt werden:

<ListView DataContext="{Binding ElementName=MainPage, Path=PostFach}"   ItemsSource="{Binding}" Background="Beige" Name="viewPostbox" Margin="0,0,0,0"  VerticalAlignment="Top"   BorderThickness="0"  HorizontalAlignment="Left" Width="260" Height="100">
    <ListView.View>
      <GridView>
        <GridViewColumn Header="File" DisplayMemberBinding="{Binding Name}" Width="180"/>
        <GridViewColumn Header="Datum" DisplayMemberBinding="{Binding Datum}" Width="80" />
      </GridView>
    </ListView.View>
  </ListView>

Der XAML Code von der ListBox wird zur Laufzeit in ein Frame geladen (frameRight):

<Page x:Class="DokiWebManager.pageMain"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="pageMain" Name="MainPage">
    <Grid Background="Beige">
        
        <Grid Background="Beige" Width="800" Height="600"  ShowGridLines="true">
        
        <Menu Name="mnuMain" Background="BlanchedAlmond" Margin="0,0,0,0" Height="20" VerticalAlignment="Top">
            <MenuItem Header="DokiWeb">
                <MenuItem Header="Verlassen" Name="mnuAppExit" Click="mnuAppExit_Click" />
            </MenuItem>
        </Menu>
        <StatusBar Height="20" Name="statusBar1" VerticalAlignment="Bottom" Background="BlanchedAlmond" Grid.Row="2" Grid.ColumnSpan="2" />
        
         <Rectangle  Margin="0,0,0,0" Name="rectangle1" Stroke="Brown"  />
            <Frame  Margin="0,20,0,0" Height="560"  Name="frameLeft" VerticalAlignment="Top" HorizontalAlignment="Left" Width="200" />
            <Frame  Margin="200,20,0,0" Height="560"  Name="frameRight" VerticalAlignment="Top" HorizontalAlignment="Left" Width="600" />    
           
            <TreeView Background="Beige"  HorizontalAlignment="Left" Margin="5,5,0,0" Name="treeMain" Width="190" Height="550">
                <TreeViewItem Header="Dokumente" Name="treeItemDokumente" Selected="treeItemDokumente_Selected" />
                <TreeViewItem Header="Kontakte" Name="treeItemKontakte" />
                <TreeViewItem Header="Bilder" Name="treeItemBilder" />
            </TreeView>
        </Grid>
    </Grid>
</Page>


public Collection<PostBoxFiles> PostFach { get; set; }


private void treeItemDokumente_Selected(object sender, RoutedEventArgs e)
        {
            
            PostFach = dApi.PostFach;

            Uri pageUri = new Uri("pack://siteOfOrigin:,,,/XAML/pageDocument.xaml", UriKind.RelativeOrAbsolute);
            this.frameRight.Source = pageUri;

     

        }

Die Klasse PostBoxFiles sieht wie folgt aus:

public class PostBoxFiles : INotifyPropertyChanged
    {
        
        private string _file;
        private DateTime _datum;

        public string File
        {
            get { return _file; }
            set
            {
                _file = value;
                Changed("File");
            }
        }
        public DateTime Datum
        {
            get { return _datum; }
            set
            {
                _datum= value;
                Changed("Datum");
            }
        }
        private void Changed(string property)
        {
            
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(property));
        }

        #region INotifyPropertyChanged Member

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion

        
    }

Ich weiß nicht woran es liegt, aber ich finde den Fehler nicht warum die Daten nicht angezeigt werden! Die Collection ist aber gefüllt!

Danke für jeden Hinweis im Vorraus!

MacWale

08.06.2009 - 14:06 Uhr

Hallo,

Ich verwalte betsimmte Eigenschaften von PDF-Dateien (Briefe, Dokumente, etc) in einer Datenbank.

Jetzt möchte das Dateieigenschaftsdialog um ein Register erweitern (Rechtsklick Eigenschaften) um halt dort Informationen zur der PDF Datei anzuzeigen!

Es kann pro Dokument-Typ unterschiedlich aussehen!!

Ist sowas überhaupt möglich?

Gruß
MacWale

20.02.2009 - 13:09 Uhr

Danke für die Antworten!
Hatte vorher alles mit

SqlCeConnection conn = new SqlCeConnection();

programmiert, doch ich wollte das ganze System Datenbankunabhängig haben.

Hab es aber jetzt lösen können, ich muss in den Providernamen mit "System.Data.SqlServerCe.3.5" laden. Dann klappt alles 😉

Vielen Dank!

19.02.2009 - 21:58 Uhr

verwendetes Datenbanksystem: <System.Data.SqlServerCe>

Hallo,

bei ausführen des Befehles:


DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);

läuft bei mir auf folgendem Fehler:

System.ArgumentException wurde nicht behandelt.
Message="Der angeforderte .Net Framework-Datenprovider kann nicht gefunden werden. Er ist ggf. nicht installiert."

providername ist ein String und mit "System.Data.SqlServerCe" gefüllt.

Was mache ich falsch?

Vilen dank im Vorraus!

05.02.2009 - 16:23 Uhr

ist nicht war, mit nem Panel funktioniert es, aber mit TableLayoutPanle nicht??? Woran liegt das??

05.02.2009 - 16:07 Uhr

nein habe ich nicht. 😦

Ja das ist klar, wenn ich eine Form erbe, dass ich im normalfall kein zugriff auf die Steuerelemente habe. Jedoch habe ich alle Elemente auf der Basisform auf protected gesetzt. Installier gerade das ServicePack1 für Visual Studio 2005, mal schauen, ob es was bringt.

05.02.2009 - 15:53 Uhr

Ich vererbe ja nicht die Buttons, sondern die Form. Ich will ja nicht das TableLayout oder ein Button erben.

Ja du hast mir nen Tipp gegeben mit dem Service Pack 1, lade es gerade runter. Vermutlich wird es daran liegen.

Übrigens mit nem UserControl habe ich das selbe Problem.

Ansonsten müsste ich das Table Layout weglassen, was aber unschön wäre

05.02.2009 - 15:40 Uhr

Projekt bereinigen bringt nix, neu geöffnet etc habe ich auch schon, aber alles schon mehrfach. Kann es sein, dass der Designer dies nicht unterstützt. Naja wäre echt blöd 😦 In dem Sinne würden mir auch Controls nicht weiterhelfen

05.02.2009 - 15:31 Uhr

mit public habe ich es auch schon versucht, ist negativ.

Ich muss es leider mit Forms machen 😦.

05.02.2009 - 15:16 Uhr

ja hab ich auch schon drüber nachgedacht, ein Usercontrol zu verwenden, aber Forms wären sinnvoller

05.02.2009 - 15:15 Uhr

Hallo,

ja da ist so ein kleines Schloss.
Der Modifier ist von Private auf Protected umgestellt, aber keine Änderung!

Gruß
MacWale

05.02.2009 - 15:03 Uhr

Hallo,

ich habe vor eine Windows Form zu vererben.

Auf der Basis Form sind die Steuerelemente drauf, die drauf sein müssen.

Alles schön und gut.

Jetzt erbe ich das ganze, rufe auch die Knostuktor aus der Basisklasse auf, und er zeigt mir nun die Steuerelemente an, wie in der Basisklasse auch. Jetzt will ich in ein TableLayout, welches in der Basisklasse ist ein neues Steuerelement drauf ziehen, leider ohne Erfolg, da es nicht funktioniert.

Was mache ich falsch?????????

Ich verwende Visual Studio 2005!

Gruß
MacWale

17.12.2008 - 22:15 Uhr

Ja kann schlecht debuggen da ich den Source nicht habe, sonst würd ich das ja machen

17.12.2008 - 10:47 Uhr

Habe die Demo mal getestet, aber bei mir läuft das Programm direkt beim Start auf ein Fehler. Kann jetzt auswendig den Fehler nicht nennen, bin gerade im Büro und zuhause habe ich es gestern abend mal getestet, bzw wollte ich testen.

Kann es evtl möglich sein, dass die DLL Probleme mit einem 64bit Betriebsystem hat. Habe Windows XP 64bit.

Ich starte gerade eine Entwicklung von einem Dokumentenmanagement System, welches auch eine Scan Anbindung haben bzw eher muss.

Gruß
MacWale

10.07.2008 - 14:08 Uhr

hallo @baesler,

du kannst dem mail.body html übergeben, ob mit header weiß ich nicht, musste ausprobieren. Dann muss du dem MailObject noch sagen, dass es eine html mail ist, meines wissens nach ist das die eigenschaft isHtmlbody??

Aber damit müsste es eigentlich funtkionieren

Gruß
MacWale

29.06.2008 - 23:02 Uhr

Hallo,

das mit dem DataSet hört sich gut an, hab ich soweit umgesetzt, bis auch den Datentyp und die Größe.
Über DataColumn bekommen ich zwar einen Datentyp, aber nicht den SQLDBType! Die Größe über die die Eigenschaft MaxLength bekomme ich auch nicht, es steht immer -1 drin.

Füllen:


string strSQL = "Select * from " + TableName;
SqlCeDataAdapter da = new SqlCeDataAdapter(strSQL, mConn);
da.Fill(mDataSet);
da.TableMappings.Add("Table", aliasTable);
da.Fill(mDataSet);

Dann hole ich mir die Tabelle in eine DataTable und überprüfe die Spalten mit ner foreach


foreach (  DataColumn  spalte in myTable.Columns)
{
}

Über spalte.DataType will ich mir nun den Spaltentyp rausholen, aber dort bekomme ich den SQLDBType nicht her.
Wo wird der abgelegt??
Mfg
MacWale

27.06.2008 - 18:12 Uhr

verwendetes Datenbanksystem: <Microsoft SQL Server Compact>

Hallo,
ich möchte prüfen ob ein bestimmtes Feld in der Tabelle vorhanden ist. Oder erstmal schauen ob die Tabelle vorhanden ist.
Es gibt zwar die unschöne Möglichkeit mit


select feldname from tabelle

aber ich möchte ne schicke Möglichkeit wie das in Java auch Möglich ist. Dort kann ich die Tabellen in einer Datenbank mit einer Schleife durchforsten.

Zu allerletzt wäre es noch genial, wenn ich den Typ des Feldes überprüfen könnte.

Vielen Dank im Vorraus!
Gruß
MacWale

26.06.2008 - 22:14 Uhr

Hallo,

ich möchte bei einem Setup ein Autostarteintrag in die Registry schreiben, so dass das installierte Programm bei Windowsstart im Hintergrund startet.
Wie lös ich das am geschicktesten? ich könnte auch nen Autostart eintrag im startmenü machen, aber das will ich nicht unbedingt.

Gruß
MacWale

19.06.2008 - 19:18 Uhr

au mist,

da hätt ich auch selbst drauf kommen können 🙂
Danke vielmals!!!!!
DANKE, DANKE, DANKE!

Gruß
MacWale

19.06.2008 - 18:40 Uhr

verwendetes Datenbanksystem: SQL Server Compact Edition-Datenbank für lokale Daten

Hallo,
Ich habe eine lokale Datenbankbankdatei und möchte auf die Datenbank zugreifen. Habe vorher ACCESS im Projekt benutzt und will nun auf die *.sdf Datei zugreifen. Vorher hatte ich folgenden ConnectionString, wie passe ich den nun an?

danke im vorraus für jede Info!

gruß
MacWale

23.05.2008 - 09:05 Uhr

Ja mit ClientSize habe ich es auch schon versucht, aber der selbe Effekt.

23.05.2008 - 08:47 Uhr

Ja gut, dass wird zwar nen bisschen arbeit, aber okay, wird wohl das beste sein, um das problem zu lösen.

22.05.2008 - 20:57 Uhr

ja, aber ich will halt nicht immer das selbe anzeigen!
links bleibst fast immer gleich, nur rechts unten wird sich viel ändern während der laufzeit.
Mit VB6 ging das immer sehr gut, okay ist uralt, aber da ging sowas

22.05.2008 - 20:15 Uhr

mit this.Height und this.Width.

ja damit hab ich auch versucht, aber dadurch bekomme ich auch den scrollbalken.
will die fenster so groß haben, dass sie die breite des mdis komplett ausfüllen, aber nicht breiter werden, so dass der scrollbalken erscheint

22.05.2008 - 16:10 Uhr

Hallo,

ich habe eine MDI Form, in der ich verschieden Formular darstellen will.
Ich will diese Formulare fest positionieren, was auch eigentlich funktioniert.
Ich passe die MDI Childs in der Größe an, so dass ich links am Rand ein Formular habe, rechts oben, links unten, rechts unten. Kann aber auch mal sein, dass ich rechts nur ein Formular habe, und links ein Formular.

Meine Vorgehensweise:
Ich lade die gewünschten Formular und positioniere sie:


private void form_rezise(object sender, EventArgs e)
        {

            if (Baumansicht != null)
            {
                Baumansicht.Top  = 0;
                Baumansicht.Left = 0;
                Baumansicht.Height = this.DisplayRectangle.Height * 60 / 100;
                Baumansicht.Width = this.DisplayRectangle.Width * 30 / 100;
                
            }
            if (mDokumentList != null)
            {
             
                mDokumentList.Left = this.DisplayRectangle.Width * 30 / 100;
                mDokumentList.Width = this.DisplayRectangle.Width - Baumansicht.Width;
                mDokumentList.Height = this.DisplayRectangle.Height * 40 / 100;
            }


        }

Es werden hier momentan die formulare baumansicht und mDokumentlist gleichzeitig angezeigt. Jedoch habe ich das Problem, wenn ich diese beiden Formulare anzeige, dann gehen Sie über die Größe des MDIs herraus, so dass unten eine Scrollbar erscheint. Dies will ich vermeiden. Wie bekomme ich die Größe vom MDI Fenster herraus, wo ich die Fenster positioneren kann??

Vielen Dank im Vorraus