Du meintest doch nutze eine Methode die dein Bild nicht skaliert und skaliere es stattdessen zuvor selber? Das versuche ich aktuell .. Mir ist bewusst das du mir die Lösung nicht via Quelltext zureichst, allerdings sitz ich auch schon einige Tage an dem Problem und schreib in der Regel nur ins Forum, wenn ich wirklich nicht mehr weiterkomme, dementsprechend fehlen mir an solchen Punkten wahrscheinlich schon die Nerven für solche Ratespiele oder seh das offentsichtliche mittlerweile nicht mehr.
Grüße
Versteh jetzt nicht was an der
DrawImageUnscaled(Image,Int32,Int32)
Zeichnet das angegebene Bild in seiner ursprünglichen physischen Größe an der von einem Koordinatenpaar angegebenen Position.
Funktion dann so verkehrt sein soll?
Grüße
Hey LaTino,
danke für deine Antwort, du meinst wahrschein DrawImageUnscaled.
Ich guck mal wie ich das Bild auf eine A4 Seite skaliere und ob das dann besser funktioniert.
Grüße
Servus,
hat jemand von euch sich schon einmal ein TabControl erstellt, was unterschiedliche TabItem Styles beinhaltet?
Ich möchte gerne das mein erstes TabItem und mein letztes Tabitem sich von den normalen Tabitems unterscheiden.
Hab schon etwas gefunden, wo man via Converter rausfinden muss welches Tabitem es denn ist um dann eventuell einen anderen Style zu hinterlegen?
Wenn jemand schon Erfahrungen sammeln könnte, wäre es nett, falls er sie teilen würde 😃
Edit : Gerade auf den itemContainerStyleSelector gestoßen, sollte jemand trotzdem schon Erfahrungen haben, gerne trotzdem teilen, ich probier es mal damit
Grüße
Der Screenshot sieht ganz normal und auch gut aus, aber sobald ich das ganze drucken möchte, kommt folgendes verzehrtes Bild raus :
Irgendwas muss bei dein Druckereinstellungen nicht stimmen.
Es scheint nicht am Screenshot zu liegen sondern am Druck irgendwie verzehrt der Drucker mir das Bild
Hab ich aus einem alten Projekt übernommen wo ich bereits einen Screenshot mache und dem einer PDF hinzufüge um eine möglichst gute Qualität zu haben.
Hab es mal auf 96, 96 geändert, das Ergebnis ist gleich, einige Linien werden einfach nicht richtig gezogen dadurch sind Wörter nicht lesbar, daran kann es nicht liegen.. ist auch Drucker übergreifend so liegt also auch nicht am Drucker.
Drucken tu ich aktuell so :
e.Graphics.DrawImage(Image_From_Screenshot, 0, 0, e.PageBounds.Width, e.PageBounds.Height)
Den Titel hab ich nicht gewählt sondern Coffeebean, btw. so eine Antwort ist absolut 0 hilfreich und anscheinend hast du dir weder meine Frage noch Quelltext durchgelesen, weil du anscheinend nicht wirklich einen Plan hast um was es geht.
Und hätte ja sein können das jemand unter C# das gleiche auch schon mal probiert hat, scheint aber in deiner Welt nicht der Fall zu sein 😉
Niemand Erfahrungen oder eine Idee? 😕
Servus,
ich versuch jetzt schon seit Tagen einen Screenshot vom Bildschirm zu machen, um diesen dann auszudrucken, leider funktioniert irgendwas immer nicht.
Ich benutze die Klasse System.Drawing.Printing.PrintDocument
Ich erstelle mein Image :
' --- Einstellungen vom Fenster --- '
GetWindowRect(GetActiveWindow, Rectangle)
' --- Bereinigung --- '
Image_From_Screenshot = Nothing
Dim Image As New System.Drawing.Bitmap(Rectangle.Right - Rectangle.Left, Rectangle.Bottom - Rectangle.Top)
' --- Screenshot --- '
Using Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Image)
Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
Graphics.CopyFromScreen(New System.Drawing.Point(Rectangle.Left, Rectangle.Top), New System.Drawing.Point(0, 0), Image.Size)
End Using
Image.SetResolution(400, 400)
Image.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone)
' --- Druckvorgang --- '
Dim Print_Dialog As New System.Windows.Forms.PrintPreviewDialog
'' --- Zuweisung --- '
Image_From_Screenshot = Image
Und versuche dieses Image dann auszudrucken, leider stimmen entweder die Maße nicht oder wie aktuell sieht die Auflösung furchtbar aus, ich bin langsam am verzweifeln, hat jemand mit dem Thema bereits Erfahrungen sammeln können? Beim Googlen hat mir nichts weitergeholfen.
Image drucken :
'Print_Document.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(0, 0, 0, 0)
'Dim x As Integer = e.MarginBounds.X + (e.MarginBounds.Width - Image_From_Screenshot.Width) / 2
'Dim y As Integer = e.MarginBounds.Y + (e.MarginBounds.Height - Image_From_Screenshot.Height) / 2
'Dim imgRect As New System.Drawing.Rectangle(New System.Drawing.Point(0, 0), Image_From_Screenshot.Size)
e.Graphics.DrawImage(Image_From_Screenshot, 0, 0, e.PageBounds.Width, e.PageBounds.Height) 'e.MarginBounds.Width - 100, e.MarginBounds.Height - 100
Grüße
Moin Sir Rufo,
aber bei der Text Geschichte hatte sich ja das Preview Event angeboten, so etwas gibt es doch beim SelectionChanged nicht.
Grüße
Edit : Pinki probier es einfach mal fix aus, ist nicht so einfach wie es klingt 😄
Servus Community,
kennt jemand eine Möglichkeit bzw. hat jemand schon mal versucht das SelectionChangedEvent abzubrechen?
Beispiel :
Ausgewählt A
Neue Auswahl B
Möchten Sie wirklich den Wert ändern?
Nein -> Wert wieder auf A setzen
Im Binding SelectedIndex funktioniert es leider nicht, im Event SelectionChanged scheint es auch nicht möglich sein..
Grüße!
Servus Sir Rufo,
ich bastel momentan noch mit dem Attached Property.. allerdings brauch ich einige Variablen aus meinem ViewModel und als ich dann ein wenig rumprobiert habe.. kam irgendwann die Frage in mir auf, warum man nicht einfach gleich das PreviewTextInput Event von der ComboBox nutzt, wäre doch wesentlich einfacher oder? 😄
Grüße
Okay hab es endlich hinbekommen ..
Danke für das Beispiel Sir Rufo!
Endlich ein Erfolgserlebnis nach 3 Tagen .. sorry wenn ich manchmal ein wenig seltsam geantwortet habe, aber mittlerweile hatte ich echt schlechte Laune wegen dem ganzen, ich versuch das ganze jetzt nachzuvollziehen, dann bastel ich das auf mein Projekt um und teile das Ergebnis nochmal für alle in VB.NET ..
Danke nochmal für das Beispiel.
Er kommt ja nicht mal in das ComboBox_TextChanged Event.. ich kann mich so oder so nicht aktuell mit dem ComboBox_PreviewTextInput Event auseinandersetzen 😮
Ich weiß, aber das sollte ja nicht daran stören in die Funktion zu springen und das macht er eben erst gar nicht 😕
mMn springt er nicht mal in die ComboBox_TextChanged, weil local:ComboBoxTry.TextInterception="{Binding TextInterception}" überhaupt kein Bezug hat zur Text Property
Denke mal im ViewModel hab ich irgendwas falsch gemacht
Public Class ComboBoxTry
Public Interface ITextInterception
Function ShouldChangedText(value As String, newValue As String) As Boolean
End Interface
Public Shared ReadOnly TextInterceptionProperty As DependencyProperty = DependencyProperty.RegisterAttached("TextInterception", GetType(ITextInterception), GetType(ComboBoxTry),
New FrameworkPropertyMetadata(Nothing,
New PropertyChangedCallback(AddressOf ComboBox_TextChanged)))
Public Shared Sub SetTextInterception(obj As ComboBox, value As ITextInterception)
obj.SetValue(TextInterceptionProperty, value)
End Sub
Public Shared Function GetTextInterception(obj As ComboBox) As ITextInterception
Return TryCast(obj.GetValue(TextInterceptionProperty), ITextInterception)
End Function
Private Shared Sub ComboBox_TextChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim ComboBox As ComboBox = d
If ComboBox.Text = "C" Then
AddHandler ComboBox.PreviewTextInput, AddressOf ComboBox_PreviewTextInput
End If
End Sub
Private Shared Sub ComboBox_PreviewTextInput(sender As Object, e As TextCompositionEventArgs)
End Sub
End Class
Imports WpfApplication2.ComboBoxTry
Public Class ViewModel
Implements System.ComponentModel.INotifyPropertyChanged
Sub New()
Dim TextInterception As New TextInterceptionImpl
End Sub
Class TextInterceptionImpl
Implements ITextInterception
Public Function ShouldChangedText(value As String, newValue As String) As Boolean Implements ComboBoxTry.ITextInterception.ShouldChangedText
If value = "A" Then
newValue = "B"
Return True
End If
newValue = String.Empty
Return False
End Function
End Class
Private _TextInterception As ITextInterception
Public Property TextInterception As ITextInterception
Get
Return _TextInterception
End Get
Set(value As ITextInterception)
_TextInterception = value
PropertyChange("TextInterception")
End Set
End Property
Private _Lieferschein_Text
Public Property Lieferschein_Text As String
Get
Return _Lieferschein_Text
End Get
Set(value As String)
_Lieferschein_Text = value
PropertyChange("Lieferschein_Text")
End Set
End Property
#Region "Interface"
Private Sub PropertyChange(ByVal Name As String)
RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(Name))
End Sub
Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
#End Region
End Class
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication2"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ComboBox local:ComboBoxTry.TextInterception="{Binding TextInterception}" Text="{Binding Lieferschein_Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEditable="True"/>
</Grid>
</Window>
EDIT: hab jetzt nicht versucht die Variable direkt zu beeinflussen, hab erstmal nur versucht mit Breakpoints zu gucken ob er in die Funktionen reinspringt
Das kannst du aber nicht 1 zu 1 so übernehmen, außerdem hab ich Codeschnipsel die mir nicht bekannt vor kamen damit schon übersetzt, wie gesagt es funktioniert ja nicht.
Deinen Quellcode quasi in VB.net zu übertragen, weil wenn ich eine Eingabe in der Combobox tätige er nicht mal in das TextInterception springt..
@Sir Rufo : Es ist kein FullQuote, habe einige deiner Zeilen gelöscht, die mMn nicht relevant waren.. In jedem Fall muss ich ja irgendwas falsch machen, weil bei mir funktioniert es nicht..
@MarsStein :
Ich habe vor den Inhalt von Text Property der ComboBox zu ändern :
Bedeutet wenn der User (Beispiel) A eintippt möchte ich daraus automatisch ein B machen.
If Not IsDBNull(DataRow.Item("Lieferschein")) Then ViewModel.Lieferschein_Text = DataRow.Item("Lieferschein")
Diese Zeile stammte aus dem PropertyChanged Event ..
Beispiel :
Select Case e.PropertyName
Case "Lieferschein_Text"
IF ViewModel.Lieferschein_Text = "A" THEN
ViewModel.Lieferschein_Text = "B"
END IF
Wie man das lösen könnte, kam ja bereits von Sir Rufo, allerdings krieg ich es in VB.NET noch nicht hin
Aus meiner Sicht brauch ich doch nur das um zu prüfen ob ich die Eingabe im Vorfeld verändern kann :
Hier mal eine Lösung in C#
Definition der AttachedProperty
(wer sich an der Begrifflichkeit Behavior stört, ersetze das bitte in Gedanken durch EgonKarlSeineFrauIhreGedöns)using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace mc119350.WpfApp.Behavior { public interface ITextInterception { bool ShouldChangeText(string value, out string newValue); } public static class ComboBoxInterceptor { // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static readonly DependencyProperty TextInterceptionProperty = DependencyProperty.RegisterAttached( "TextInterception", typeof(ITextInterception), typeof(ComboBoxInterceptor), new PropertyMetadata(null, TextInterceptionChanged)); public static void SetTextInterception(ComboBox obj, ITextInterception value) { obj.SetValue(TextInterceptionProperty, value); } public static ITextInterception GetTextInterception(ComboBox obj) { return obj.GetValue(TextInterceptionProperty) as ITextInterception; } static void TextInterceptionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var obj = d as ComboBox; if (e.OldValue == null && e.NewValue != null) { obj.PreviewTextInput += ComboBox_PreviewTextInput; } if (e.OldValue != null && e.NewValue == null) { obj.PreviewTextInput -= ComboBox_PreviewTextInput; } } static void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e) { var obj = sender as ComboBox; var interceptor = GetTextInterception(obj); string newText; if (interceptor.ShouldChangeText(e.Text,out newText)) { e.Handled = true; obj.Text = newText; } } } }
Hier das ViewModel
using GalaSoft.MvvmLight; using mc119350.WpfApp.Behavior; using System.Collections.ObjectModel; namespace mc119350.WpfApp.ViewModel { public class MainViewModel { public MainViewModel() { TextInterception = new TextInterceptionImpl(); } class TextInterceptionImpl : ITextInterception { public bool ShouldChangeText(string value, out string newValue) { if (value == "A") { newValue = "B"; return true; } newValue = string.Empty; return false; } } string _lieferschein_Text; ITextInterception _textInterception; public ITextInterception TextInterception { get => _textInterception; set => Set(ref _textInterception, value); } public string Lieferschein_Text { get => _lieferschein_Text; set => Set(ref _lieferschein_Text, value); } } }
und zu guter letzt die View
<Window x:Class="mc119350.WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:behavior="clr-namespace:mc119350.WpfApp.Behavior" xmlns:local="clr-namespace:mc119350.WpfApp" mc:Ignorable="d" DataContext="{Binding Source={StaticResource Locator}, Path=Main}" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition /> </Grid.RowDefinitions> <ComboBox Grid.Row="0" behavior:ComboBoxInterceptor.TextInterception="{Binding TextInterception}" Text="{Binding Lieferschein_Text,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" IsEditable="True" Margin="1"/> </Grid> </Window>
Und das habe ich auch versucht so in VB.net umzusetzen..
Möchte ich auch allerdings verändert sich in meiner TextInterception Property nichts bei dem Binding..
Also so richtig krieg ich es nicht hin ..
Woher soll denn TextInterception wissen wann sich der Lieferschein_Text ändert?
Das klingt so als wenn das Sinn macht mit dem AttachedProperty.. konnte aber bis jetzt noch keinen Erfolg verbuchen.
Hast du denn ein Beispiel dazu? Bzw. hast du das in der Richtung schon mal gemacht und weißt das es so funktionieren würde?
Hab jetzt mal die PropertyChangedCallback Funktion versucht, er setzt zwar den Wert korrekt, aber der ComboBox Inhalt verändert sich halt einfach nicht, als wenn die sich nicht aktualsieren möchte..
Hallo Sir Rufo!
Sorry für die späte Antwort hatte leider kaum Rechnerzugang am Wochenende.
Hier mal das ViewModel mit allen Eigenschaften die an diese ComboBox gebunden sind :
Public Property Lieferschein As System.Data.DataTable
Get
Return _Lieferschein
End Get
Set(value As System.Data.DataTable)
_Lieferschein = value
PropertyChange("Lieferschein")
End Set
End Property
Public Property Lieferschein_SelectedIndex As Integer
Get
Return _Lieferschein_SelectedIndex
End Get
Set(value As Integer)
_Lieferschein_SelectedIndex = value
PropertyChange("Lieferschein_SelectedIndex")
End Set
End Property
Public Property Lieferschein_Text As String
Get
Return _Lieferschein_Text
End Get
Set(value As String)
_Lieferschein_Text = value
PropertyChange("Lieferschein_Text")
End Set
End Property
Hab jetzt mal den Code nochmal als nicht C# Code gekennzeichnet ... Sorry!
Ich probiere es aktuell im PropertyChanged Event an dieser Stelle :
Case "Lieferschein_Text"
ViewModel.Kundennummer_Value = ViewModel.Kundennummer_Text
ViewModel.Lieferschein_Value = ViewModel.Lieferschein_Text
' --- Bereinigung --- '
ViewModel.Lieferschein_Datum = ""
' --- Individuelle Eingabe --- '
set_ComboBox_Kundennummer_Lieferschein()
If ViewModel.Lieferschein_Text = "A" Then
ViewModel.Lieferschein_Text = "Ohne"
End If
Im Setter hatte ich es schon versucht und eben auch noch einmal .. hatte auch nicht funktioniert.
Public Property Lieferschein_Text As String
Get
Return _Lieferschein_Text
End Get
Set(value As String)
If value = "A" Then
value = "B"
End If
_Lieferschein_Text = value
PropertyChange("Lieferschein_Text")
End Set
End Property
Es scheint so .. das er die Ansicht nicht ändert wenn man die Variable im PropertyChanged Event verändern möchte, wenn ich das ganze über einen extra Button steuer .. funktioniert es.
Jemand eine Idee warum?
Jemand eine Idee?
<ComboBox Margin="1" IsEditable="True" ItemsSource="{Binding Lieferschein, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Lieferschein" SelectedIndex="{Binding Lieferschein_SelectedIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Text="{Binding Lieferschein_Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding IsEnabled}" IsTextSearchEnabled="False" IsSynchronizedWithCurrentItem="True">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
Ich hab auch schon versucht die ItemSource zu aktualisieren (klappt auch) und den SelectedIndex auf den Eintrag zu wechseln, trotzdem bleibt in dem Fall (alles via Quellcode) der Inhalt veraltet.
Grüße
Edit : IsSynchronizedWithCurrentItem="True" hab ich gestern erst beim rumprobieren hinzugefügt.
Hallo inflames2k!
Ja, hab ich und er wird auch durchlaufen.
Edit: in der Property steht dann auch der neue Wert drinne, aber die ComboBox hat immer noch den alten Wert.
Servus in die Runde..
Eventuell kann mir jemand fix weiterhelfen ich versuche eine Combobox Eingabe zu verändern.
Beim Laden (Inhalt) der Combobox funktioniert seltsamerweise alles einwandfrei.
Beispiel :
Property im ViewModel :
Public Property Lieferschein_Text As String
Get
Return _Lieferschein_Text
End Get
Set(value As String)
_Lieferschein_Text = value
PropertyChange("Lieferschein_Text")
End Set
End Property
Ladevorgang :
If Not IsDBNull(DataRow.Item("Lieferschein")) Then ViewModel.Lieferschein_Text = DataRow.Item("Lieferschein")
Lieferschein Inhalt wird korrekt angezeigt.
ViewModel_PropertyChanged Event :
Case "Lieferschein_Text"
If ViewModel.Lieferschein_Text = "A" Then
ViewModel.Lieferschein_Text = ""
End If
Funktioniert nicht der Inhalt bleibt beim A
Kann mir jemand weiterhelfen?
Grüße
Ist ein Lösungsvorschlag für sein Problem, außerdem hat das was auch mit eigener Pflege zu tun, ist mir in 3 Jahren noch nie um die Ohren geflogen, es ist halt statisch, man muss es im Hinterkopf haben.
Grüße
Konnte damit schon jemand Erfahrungen sammeln?
Grüße
Servus,
wenn es dir egal ist ob dein Image Bild1 heißt oder dein ContextMenu Bild1 dann könntest du es auch so machen :
Dim Source AS FrameworkElement = TryCast(e.Source, FrameworkElement)
Dim ContextMenu AS ContextMenu = CType(Source.Parent, ContextMenu)
ContextMenu.Name
Grüße
Servus,
wenn du es so löst warum willst du dann vom MenuItem überhaupt den Namen haben?
Du landest doch im passendem Event, da weißt du doch schon von welchem MenuItem du kommst und kannst den Namen einfach fest hinterlegen.
Grüße
Hallo,
entweder du bindest die Bilder ins Projekt ein (1 roter Rahmen) oder du machst einen Verweis auf die Datei via Pfad (2 roter Rahmen).
Grüße
Hallo Community,
ich hab mal eine Frage, existiert eine einfache Lösung um über den Xaml Code die Größe der Spalten anzupassen wenn die Breite bereits bei Datenbefüllung festgelegt wurde?
Folgende Situation :
Ich fülle mein DataGrid mit Daten (50 Datensätze) darunter einige Spalten die sich auf die breiteste Spalte festlegen. Wenn man über meinen eigenen Kopfbereich nun Filteranpassungen tätigt, werden die Datensätze auf diese Anzahl dann begrenzt, allerdings bleiben die Spalten bei der Größe die vorher festgelegt wurde, was ein wenig Platz verschwendent ist.
Hat jemand eine Idee?
Grüße
Es liegt am Netzwerkpfad.
Hallo :
Der Teil knallt :
Try
Dim Image As System.Drawing.Image = System.Drawing.Icon.ExtractAssociatedIcon(FileInfo.FullName).ToBitmap
Image.Save(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp\" & Benutzer & "\" & FileInfo.Name & "")
DataRow.Item("Icon") = ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp\" & Benutzer & "\" & FileInfo.Name
Catch ex As Exception
End Try
Sorry.
Also der Benutzer wählt eine Datei von seinem Computer aus, diese wird dann dem oben angegebenen Pfad hinterlegt, danach wird die mit Name und Icon in einer Tabelle angezeigt und kann ggf. aufgerufen werden.
Dim Benutzer As String = System.Environment.UserName
Try
If Not System.IO.Directory.Exists(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp\" & Benutzer & "") Then
' --- Wenn der aktuelle Benutzer keinen Ordner besitzt, wird dieser nachträglich angelegt --- '
If Not System.IO.Directory.Exists(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons") Then System.IO.Directory.CreateDirectory(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons")
If Not System.IO.Directory.Exists(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanamgenetsystem\Icons\Temp") Then System.IO.Directory.CreateDirectory(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp")
System.IO.Directory.CreateDirectory(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp\" & Benutzer & "")
End If
If Not System.IO.Directory.Exists(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files\Temp\" & Benutzer & "") Then
' --- Wenn der aktuelle Benutzer keinen Ordner besitzt, wird dieser nachträglich angelegt --- '
If Not System.IO.Directory.Exists(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files") Then System.IO.Directory.CreateDirectory(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files")
If Not System.IO.Directory.Exists(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanamgenetsystem\Files\Temp") Then System.IO.Directory.CreateDirectory(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files\Temp")
System.IO.Directory.CreateDirectory(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files\Temp\" & Benutzer & "")
End If
Catch ex As Exception
Fehlerbehandlung = New Fehlerbehandlung()
Fehlerbehandlung.Fehlermeldung = ex
Fehlerbehandlung.ShowDialog()
End Try
Try
Using OpenFileDialog As New System.Windows.Forms.OpenFileDialog
If OpenFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
' --- interne Variablen Deklaration --- '
Dim FileInfo As New System.IO.FileInfo(OpenFileDialog.FileName)
Dim _Info As System.IO.FileInfo
' --- Dient der Prüfung ob die Datei bereits in der Tabelle hinterlegt ist --- '
Dim eFile As Boolean = False
' --- Prüfung ob die Datei bereits im Verzeichnis hinterlegt ist --- '
For Each File As String In My.Computer.FileSystem.GetFiles(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files\Temp\" & Benutzer & "\")
Dim Info As New System.IO.FileInfo(File)
If FileInfo.Name = Info.Name Then
eFile = True
_Info = Info
Exit For
End If
Next
If eFile = True Then
' --- Die Datei exisitert bereits unter \\192.168.88.48\Daten\IT-Tools\Beschwerdemanagementsystem\Files --- '
FileInfo.CopyTo(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files\Temp\" & Benutzer & "\" & _Info.Name & "", True)
eFile = False
' --- Prüfe ob die Datei bereits in der Liste existiert --- '
For Each File As System.Data.DataRow In ViewModel.Dateiname.Rows
If File.Item("Name") = FileInfo.Name Then
eFile = True
Exit For
End If
Next
If eFile = False Then
Dim DataRow As System.Data.DataRow = ViewModel.Dateiname.NewRow
DataRow.Item("Dateiname") = Replace(FileInfo.FullName, FileInfo.Name, "")
DataRow.Item("Name") = FileInfo.Name
DataRow.Item("Icon") = ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp\" & Benutzer & "\" & FileInfo.Name
ViewModel.Dateiname.Rows.Add(DataRow)
End If
Else
' --- Die Datei existiert noch nicht unter \\192.168.88.48\Daten\IT-Tools\Beschwerdemanagementsystem\Files --- '
FileInfo.CopyTo(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files\Temp\" & Benutzer & "\" & FileInfo.Name & "")
FileInfo = New System.IO.FileInfo(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Files\Temp\" & Benutzer & "\" & FileInfo.Name & "")
Dim DataRow As System.Data.DataRow = ViewModel.Dateiname.NewRow
DataRow.Item("Dateiname") = Replace(FileInfo.FullName, FileInfo.Name, "")
DataRow.Item("Name") = FileInfo.Name
Dim Image As System.Drawing.Image = System.Drawing.Icon.ExtractAssociatedIcon(FileInfo.FullName).ToBitmap
Image.Save(ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp\" & Benutzer & "\" & FileInfo.Name & "")
DataRow.Item("Icon") = ConfigLoader.DataPath & "\IT-Tools\Beschwerdemanagementsystem\Icons\Temp\" & Benutzer & "\" & FileInfo.Name
ViewModel.Dateiname.Rows.Add(DataRow)
End If
End If
End Using
If ViewModel.StatusID = 1 Or ViewModel.StatusID = 2 Then
If check_Pflichtfelder() Then If ViewModel.Einordnung.Rows(ViewModel.Einordnung_SelectedIndex).Item("Einordnung") <> "Ohne Folge" Then ViewModel.StatusID = 2
End If
Catch ex As Exception
Fehlerbehandlung = New Fehlerbehandlung()
Fehlerbehandlung.Fehlermeldung = ex
Fehlerbehandlung.ShowDialog()
End Try
Aber wie kann er dann die Datei für den Pfad hinterlegen?
Hat jemand damit schon Erfahrungen gemacht? Bei mir und auf der Testumgebung funktioniert es, beim Anwender nicht, die Datei wurde auch für den angegebenen Pfad hinterlegt.
Grüße
Das wird sie, das ist über das ViewModel geregelt.
Tut mir Leid hab das ganze auch ein wenig knapp beschrieben.
' --- ViewModel (Auftragsabwicklung) - Befüllung mit Daten zu dem vorhandenen Mandanten --- '
ViewModel.Auftragsabwicklung = processingAssignments(Datenbank.return_Auftragsabwicklung_Aufträge(ViewModel.MandantCbIndex)).DefaultView
ViewModel.Auftragsabwicklung.Sort = "Geprüft DESC, Datum ASC"
For Each DataRow As System.Data.DataRow In ViewModel.Auftragsabwicklung.ToTable.Rows
If Not IsDBNull(DataRow.Item("Geprüft")) AndAlso DataRow.Item("Geprüft") = "2" AndAlso (IsDBNull(DataRow.Item("_FEHLERKENNUNGAUFTRAGSABWICKLUNG")) OrElse DataRow.Item("_FEHLERKENNUNGAUFTRAGSABWICKLUNG").ToString = "0") Then
ViewModel.AutomaticallyIsEnabled = True
Exit For
End If
Next
'Datenbank.insert_Auftragsabwicklungstool(Suchvorgang, "processingAssignments", ViewModel.MandantCbIndex, "Aufträge wurden erfolgreich geladen", "")
' --- Sortierung setzen --- '
'If ViewModel.Auftragsabwicklung IsNot Nothing Then ViewModel.Auftragsabwicklung.Sort = "Geprüft DESC"
setStatusMessage("Die Aufträge stehen zur Verarbeitung bereit.", "Green")
Ich führe das Laden der DataTable und Verarbeiten in einem anderen Thread aus und wenn ich an der auskommentierten Stelle die Sort Eigenschaft festlege tritt der Fehler immer mal wieder auf. Weiter oben dann nicht. Die Daten werden an sich nicht mehr verändert.
Grüße
Hallo Leute,
ich hab ein kleines Problem. Wenn ich die Sortierung für mein DataView setze wird der erste Eintrag aus irgendeinem Grund mit dem ersten (siehe Bild) unter den grünen dupliziert. Wenn ich dann runterscrolle scheint sich das ganze zu aktualisieren und stimmt dann auch.
Wie kann so etwas passieren?
Grüße
Die Pfade in der cidfmap weichen in der 32 Bit Version von der 64 Bit Version ab, deswegen hatte er weiterhin die Zeichen nicht erkannt.
Hallöchen,
keine Ahnung ob ich das jetzt in den richtigen Thread setze.
Hat jemand Erfahrung mit Ghostscript? Leider stellt er mir keine € Zeichen dar sondern macht daraus ein B. Ich hab schon in der cidfmap Änderungen vorgenommen nur hatten die leider keine Auswirkungen darauf.
Jemand eine Idee?
Grüße
Ich zieh mir die Daten aus der Datenbank und leg die in eine DataTable, ist doch eigentlich am besten um die Daten sauber aufzubereiten oder nicht?