Laden...
S
schorge myCSharp.de - Member
Handwerker Marburg Dabei seit 19.03.2014 129 Beiträge
Benutzerbeschreibung

Forenbeiträge von schorge Ingesamt 129 Beiträge

19.09.2022 - 17:34 Uhr

Moin,

ich habe eine RichTextBox in WPF mit WordWrap und möchte die Zeilenlänge begrenzen.
Optisch passiert dass durch den RichTextBox.Document.MaxPageWidth,
komme ich über den MaxPageWidth, wird visuell eine neue Zeile angefangen,
leider aber nicht im TextRange bzw wird keine neuer Rücklauf erstellt...

RichTextBoxSample

Convert the RichTextBox Content to Text:


if (rtb.Document != null)
            {
                TextRange textRange = new TextRange(                    
                    rtb.Document.ContentStart,                    
                    rtb.Document.ContentEnd
                );

                var currentLine = textRange.Text;
                //Result:
                //" thisText ist new textwith textwrap and here no new line after MaxPageWidth only is here\r\nafter press SHIFT+ENTER a new Line :(\r\n"
                return textRange.Text;
            }

Gibt es einen "einfachen" weg das \r\n hier z.B. nach dem "and" einzufügen ?

15.08.2022 - 11:58 Uhr

Hatte ich mir schon gedacht.
Bisher habe ich diese Lösung, welche Parameter überträgt / Methoden auslöst beim beenden des Modalen Dialogs:


            FormDialog formDialog = new FormDialog();
            formDialog.FormClosed += (s, args) =>
            {
                if (formDialog.textBoxParameter != null)
                {
                    //FIRES ON CLOSE DIALOG
                    textBox1.AppendText("Dialog  " + formDialog.textBoxParameter.ToString() + Environment.NewLine);
                }
            };
            formDialog.Show();

Dialog Form:


public partial class FormDialog : Form
    {

        public string textBoxParameter { get; set; }

        public FormDialog()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBoxParameter = textBox1.Text;
            this.Close();
        }
    }

Einfrieren der auslösenden Form habe ich (ohne Beispielcode) mit einem UserControl gelöst,
das UserControl blockiert dann den Zugriff und ist zumdem noch mit this.Opacity = 0.5D;
und schwarzem Hintergrund versehen, um zu erkennen, wo ich gerade arbeite.

15.08.2022 - 09:13 Uhr

Moin,

ich möchte gerne mit mehreren Fenstern arbeiten, aber bei dem Öffnen eines Dialogs nicht alle Fenster einfrieren.
Gibt es eine Möglichkeit das vereinfacht zu realisieren ohne aufwendiges Programmieren mit Show() ?

13.07.2022 - 22:21 Uhr

WinForms gibt's nicht für .NET Standard

Mal ein Beispiel, ich habe einen Verweise auf ein Projekt mit NET Framework 4.8 etc., in denen sich ein WinForm UserControl befindet.
Lösche ich das UserControl und änderere das Projekt- Framework auf .NET Standart 2.0, kann ich ich bei meinem .NET 6
doch auf das Projekt verweisen und ein WinForms UserControl WinForms in .NEt 6 erstellen und auf die Projekt Namespaces verweisen.

13.07.2022 - 18:24 Uhr

Muss das Thema hier nochmal aufgreifen, da ich momentan auch vor der Umstellung NET48 zu NET 6 stehe.

Leider habe ich einige WinForms Projekte in mein Projekt integriert, welche UserControls haben und nicht unter NET laufen,
ist es möglich in einer Projektmappe Frameworks zu mischen? - Hauptprojekt mit NET 6 und Verweise dann auf NET48 Projekte?

Oder muss ich alles was mit WinForms zu tun hat,
alle Forms löschen und von NET Framework 4.8 auf .NET Standard 2.0 umstellen?

14.06.2022 - 10:59 Uhr

ich habe den Fehler gefunden 😉

in der program.cs


var provider = new FileExtensionContentTypeProvider();
// Add new mappings
provider.Mappings[".fbx"] = "application/x-msdownload";

app.UseRouting();
app.UseDefaultFiles();
app.UseDirectoryBrowser();


app.UseStaticFiles();

app.UseStaticFiles(new StaticFileOptions
{
    ContentTypeProvider = provider
    //Alternativ:
    //ServeUnknownFileTypes = true
});

natürlich ist es sicherer mit den Mappings, wenn die App öffentlich ist.
Ansonsten ServeUnknownFileTypes = true

14.06.2022 - 10:18 Uhr

Moinsen,

ich habe folgendes Problem, das die JavaScript von einer three.js keine Objects in
wwwroot findet.

Blazor Server APP NET 6.0

Index.razor


protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            await JSRuntime.InvokeVoidAsync("loadJs", "threeMain.js");
        }
    }

threeMain.js


const loader = new FBXLoader();
	loader.load('data/fbxModel.fbx', function (object) {...

hier findet der loader das fbx object nicht obwohl es im Ordner wwwroot/data liegt,
auch unter wwwroot direkt wird nichts gefunden.

Kann ich unter Blazor vorher (Programm.cs) die Dateien referenzieren ?
Ein img wird auch erst gefunden, wenn es auf der razor-html angefordert wird...

hiernnochmal die program.cs


var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();


var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();


app.UseRouting();

app.UseStaticFiles();

app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();


02.02.2022 - 21:36 Uhr

Ich habe es grade nur am Tablet beim Google Calendar und internen Android Kalender geteset, aber es geht nur bis zum Jahr 2100,
Bin nur Hobby und z.B. bei MySQL Date etc, ohne das ich es erlebe, aber theoretisch ist doch bei 31.12.9999 Schluss oder warum 2100?

14.01.2020 - 14:10 Uhr

@abt Danke, dann vergessen wir den Code mal schnell 😁

14.01.2020 - 13:06 Uhr

Habe eine DbExtension, aber ID ist immernoch null


//-----------------

foreach(var newMember in members)
{
    var member = this.actualMember.Clone();
    member.name = "change values";
    //set null not allowed for unique id long
    //member.id = null;

    db.MemberActivations.Set<members>().AddAndSetIdToNull(newmember, x => x.id);
}
 
db.MemberActivations.SaveChanges();

//-----------------

 public static class DbSetExtensions
    {        

        public static T AddAndSetIdToNull<T>(this DbSet<T> dbSet, T entity, Expression<Func<T, object>> predicate = null) where T : class, new()
        {
            var newEntitei = (T)Activator.CreateInstance(entity.GetType());
            

            foreach (var property in entity.GetType().GetProperties())
            {
                PropertyInfo propertyS = newEntitei.GetType().GetProperty(property.Name);
                var value = property.GetValue(entity, null);

               
                var operType = ((UnaryExpression)predicate.Body).Operand;
                var memberName = ((MemberExpression)operType).Member;                
           
                if (memberName != propertyS)
                {
                    propertyS.SetValue(newEntitei, property.GetValue(entity, null), null);
                }
                
            }
           
            //id is 0 :(
            bool exists = false;            
            return !exists ? dbSet.Add(newEntitei) : null;
        }
    }

14.01.2020 - 11:25 Uhr

verwendetes Datenbanksystem: MySql

Hallo,
ich benutze das EntityFramework von MS welches mir mittels TextTemplationg T4
meine classes erstellt.


MySql.Data.EntityFramework
Entity Framework 6 (EF6

Ich möchte gerne Entitäten speichern bei Abänderung von
wenigen values:


using (var db = new DbContext())
                    {
                        foreach(var newMember in members)
                        {
                            var member = new Member();
                            member = this.actualMember;
                            member.name = "change values";
                            //set null not allowed for unique id long
                            //member.id = null;

                            db.MemberActivations.Add(member);
                        }
                       
                        db.SaveChanges();
                        //only one item saved
                    }

leider kann ich die ID nicht auf NULL setzten,
wie erstelle ich nun mehrere Datensätze ohne diese
komplett neu ohne unique ID zu erstellen?

05.08.2019 - 15:24 Uhr

Tausendmal Danke!!

using (StreamReader sr = new StreamReader(path, System.Text.Encoding.GetEncoding(850)))

Habe die 850 einfach nicht gefunden

05.08.2019 - 14:59 Uhr

Encoding unbekannter encoding type

ich habe eine Datei (GAEP d.83) und lese den Text mit einem StreamReader aus:

TEXTDATEI:

T1Bei Anlieferung ist „uáerste Rcksichtnahme auf Mitarbeiter, Besucher   000032
T1und insbesondere Schler (Grundschler) zu nehmen. Anlieferungen sind   000033
T1w„hrend der Pausenzeiten nicht gestattet. Ausnahmereglungen fr         000034
T1Anlieferungen w„hrend der Pausenzeiten sind nicht gestattet.            000035

ich habe von UTF8, UTF16, utf-16BE und ASCI alle probiert,
habe aber immer die Umlaute falsch oder als Symbole,

r\nBei Anlieferung ist ?u?erste R?cksichtnahme auf Mitarbeiter, Besucher   \r\nund insbesondere Sch?ler (Grundsch?ler) zu nehmen. Anlieferungen sind   \r\nw?hrend der Pausenzeiten nicht gestattet. Ausnahmereglungen f?r         \r\nAnlieferungen w?hrend der Pausenzeiten sind nicht gestattet.

richtig angezeigt bekomme ich es im MS Office Word,
wo ich anfangs die Codierung MS-DOS auswähle.
Wie bekomme ich das mit dem StreamReader hin?

21.11.2018 - 20:36 Uhr

verwendetes Datenbanksystem: MySql

Folgender Fall:

ich verzweifel an einer Volltextsuche mit mehreren Wörtern:

Beispiel: Ich Suche: korn meta

Die Spalten sind wie folgt geändert:

ALTER TABLE  `music` ADD FULLTEXT (
`titel`,`interpret`,`genre`
);

SELECT * FROM `music` WHERE MATCH (`titel`,`interpret`,`genre`) AGAINST ('+korn +meta' IN BOOLEAN MODE)

=> 3 |Freak on a leash| Korn |Heavy Metal
=> 11 |Blind |Korn |Heavy

 0.0025 Sekunden

Warum ist da die ID 11 dabei, obwohl "Meta" in keiner Column vorhanden ist?

Folgender Befehl klappt zwar, aber dauert länger (hier nur ein Test, in meinem Fall 120.000 rows)


SELECT * FROM 
(SELECT * FROM `music` WHERE `titel` LIKE '%met%' OR `interpret` LIKE '%met%' OR
`genre` LIKE '%met%') AS custom
WHERE `titel` LIKE '%ko%' OR `interpret` LIKE '%ko%' OR `genre` LIkE '%ko%'

=> 3 |Freak on a leash| Korn |Heavy Metal

0.0060 Sekunden

04.11.2018 - 15:53 Uhr

Okay, ich habe folgendes für bi-directional Optionen gefunden:

-SignalR
-WebAPI and WebSockets
-Socket IO (framework for Node.js)
-Alchemy-Websockets
-Fleck
-SocketCluster (framework for Node.js)

Ein REST API habe ich schon mal entwickelt und kann darauf aufbauen (Mit JSON)
Interessant finde ich dann die SqlDependency Class die Änderungen
an der DB die Events auslösen lässt...

04.11.2018 - 11:58 Uhr

Moin,

ich habe eine C#-Forms Geschichte die einen lokalen Server
erstellt mittels HttpListener.
Jetzt bin ich auf der Suche nach einem Sample oder ähnliches
in dem ich Beispiele für die Kommunikation zwischen Server/Webseite Send/Request habe.

Sicherheit spielt erstmal keine Rolle da alles Lokal abläuft.


public static void StartListening()
        {
            HttpListener listener = new HttpListener();
            Stream _ouput;

            SetPrefixes(listener);

            if (listener.Prefixes.Count > 0)
            {
                listener.Start();

                while (true)
                {                    
                    HttpListenerContext context = listener.GetContext();
                    HttpListenerRequest request = context.Request;
                    HttpListenerResponse response = context.Response;


                    string tester = AppDomain.CurrentDomain.BaseDirectory + @"web\index.html";


                    string contents = File.ReadAllText(tester);                    
                    string html = contents;

                    byte[] buffer = Encoding.UTF8.GetBytes(html);

                    response.ContentLength64 = buffer.Length;
                    _ouput = response.OutputStream;
                    _ouput.Write(buffer, 0, buffer.Length);

                    //if (request.HttpMethod == "POST")
                    //{
                    //}

                    string text;
                    
                    try
                    {
                        using (var reader = new StreamReader(request.InputStream, request.ContentEncoding))
                        {
                            text = reader.ReadToEnd();
                            // Here Communicate with my Classes>Items>Events
                        }
                    }
                    catch
                    {

                    }
                }
            }
        }

        private static void SetPrefixes(HttpListener listener)
        {
            String[] prefixes = new String[] { "http://localhost:8000/" };

            int i = 0;

            foreach (string s in prefixes)
            {
                listener.Prefixes.Add(s);
                i++;
            }
        }


index.html


<html>
<header><title>This is title</title></header>
<body>
    Hello world
    <form action="/action_page.php" method="post">
        First name:<br>
        <input type="text" name="firstname" value="Mickey"><br>
        Last name:<br>
        <input type="text" name="lastname" value="Mouse"><br><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>


Die textvariable bleibt aber leider nach dem Submit leer 😦

Wo ich hin will:
Button in Forms ist ON
Button auf Webpage ist ON
beide sollen Kommunizieren

15.08.2018 - 11:03 Uhr

Ich kämpfe mich grade durch tausende Beispiele und die Xamarin Doku
und will nur was Grundlegendes erreichen, das sich die content_main.axml durch ein anderes
Layout ersetze.
Ich habe in VS das vorgefertigte NavigationsDrawnerObjekt verwendet,

Die content_main.axml ist in der app_bar_main.axml includet.

Intent und ActivitiyContentDetail werden dann leider wer App-Bar noch
Nav angezeigt.

Wie kann ich die Navigation beibehalten und je "Seite" trotzdem
ein eigenes Layout mit eigner Activitiy.cs erstellen?

MainActivity.cs


 protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);

            

            FloatingActionButton fab = FindViewById<FloatingActionButton>(Resource.Id.fab);
            fab.Click += FabOnClick;

            DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);

            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, Resource.String.navigation_drawer_open, Resource.String.navigation_drawer_close);
            drawer.AddDrawerListener(toggle);
            toggle.SyncState();

            NavigationView navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
            navigationView.SetNavigationItemSelectedListener(this);
            

            
            layoutContentDetail = FindViewById<RelativeLayout>(Resource.Id.layoutContentDetail);
			
			}

 public bool OnNavigationItemSelected(IMenuItem item)
        {
            int id = item.ItemId;

            if (id == Resource.Id.nav_camera)
            {
                Intent setlayoutContentDetail = new Intent(this, typeof(ActivitiyContentDetail));
				StartActivity(setlayoutContentDetail);
				
                // Beim Intent wird das Complette Layout gewechselt,
		// es soll nur das content_main.axml durch ein andere layout ersetzt werden
                // und das navigationsmenü erhalten bleiben
                
            }
            else if (id == Resource.Id.nav_gallery)
            {
                
            }
            else if (id == Resource.Id.nav_slideshow)
            {
                
            }
            else if (id == Resource.Id.nav_manage)
            {

            }
            else if (id == Resource.Id.nav_share)
            {

            }
            else if (id == Resource.Id.nav_send)
            {

            }

            DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
            drawer.CloseDrawer(GravityCompat.Start);
            return true;
        }


ActivitiyContentDetail.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace Simsons
{
    [Activity(Label = "ActivityBestellung")]
    public class ActivityBestellung : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.layoutContentDetail);
        }
    }
}

_app_bar_main.axml _


<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
    </android.support.design.widget.AppBarLayout>
    <include
        layout="@layout/content_main" />
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>

_content_main.axml _


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layoutMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/app_bar_main"
    android:minWidth="25px"
    android:minHeight="25px">   
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/hauptFrame"
        android:minWidth="25px"
        android:minHeight="25px">
        <TextView
            android:text="Seite HAUPTFRAME"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/textView1" />
    </FrameLayout>
</RelativeLayout>

06.08.2018 - 15:48 Uhr

Vielen Dank Euch!
Ich habe das ganze jetzt prinzipiell verstanden und werde mich nun mit der Umsetzung mit einer
NodeJS WepAPI auseinandersetzen.

06.08.2018 - 14:51 Uhr

Danke schon mal,

jetzt nur nochmal zum Verständnis:

Die WebAPI ist quasi die Brücke zwischen meiner App und der MySQL DB,
Der ASP.NET CORE WebAPI muss lokal auf einem Windows, einer VM laufen,
D.h.
App => HTTP Request/Response => WebAPI auf dem NAS => Insert/Update/Delete on MySQL

Bei mir fällt leider APS aus, habe kein x86 NAS,
was haltet ihr davon RESTful CRUD With Java and MySQL
bzw. welche alternative habe ich für ARM?

06.08.2018 - 13:15 Uhr

Ja, verstehe.
Da ich es früher oder später gänzlich umstellen muss auf einen WebService,
muss ich es gleich vernünftig realisieren.

Gibt es da ein verständliches HowTo für wie ich an meine MySql Daten über einen
WebService komme?

06.08.2018 - 12:46 Uhr

Doch, mit dem Browser habe ich Zugriff auf NAS und phpmyAdmin.
Sollte der Android-Emulator kein Zugriff haben, wäre der MySql Fehler
ein anderer.

06.08.2018 - 12:01 Uhr

Ja, es reicht mir auch dies lokal zu erledigen. Ich komme auch lokal auf den NAS mit dem Chrome Browser im Android Emulator- nur die Verbindung zum MySql Server scheitert.

06.08.2018 - 11:14 Uhr

Moin,

ich habe eine Android XAMARIN Anwendung und möchte eine Verbindung zu einer bestehenden
MySql DB auf einem NAS aufbauen, später extern mittels VPN.

Jetzt aber zu meinem Problem:
Ich habe VB2017 15.7.5 mit einer einfachen Abfrage.

private bool mySqlConnection()
        {
            bool connect = false;

            string myConnectionStrings = "Server=192.168.178.***;Database=table;uid=root;Password=xxx";

            MySqlConnection connection = new MySqlConnection(myConnectionStrings);
            MySqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT * from artikel_table WHERE artikel_id='10'";
            MySqlDataReader Reader;

            try
            {
                connection.Open();
                Reader = command.ExecuteReader();

                while (Reader.Read())
                {                    

                    FindViewById<EditText>(Resource.Id.txtScanName).Text = Reader["artikel_id"].ToString();
                    
                }

                Reader.Close();
                connection.Close();

            }
            catch (Exception ex)
            {
                Toast.MakeText(ApplicationContext, "Fehler:" + ex.Message, ToastLength.Long).Show();
            }

            return connect;
        }

Im Android Emulator Oreo 8.0 API 26 kann ich in Chrome über phpMyAdmin auf die DB zugreifen,
nur in meiner Test-App kommt:

Fehlermeldung:
Authentication to host '192.168.178.' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'192.168.178.' (using password: YES)"

genutzt wird Nuget Xamarin.MySql.Data

Neustarten und Rebuildings helfen leider auch nicht...

05.07.2018 - 09:21 Uhr

Ok, vielen dank für den Tipp mit der Schleife...
Ich habe es nun mit einem Bool gelöst. noch die DoubleBuffered Erweiterung des DGV hinzugefügt und komme zu dem gewünschten Ergebnis.
In dem CellEndEdit-Event müsste ich ja auch alle Rows und Cells durchlaufen und hätte
die Einfärbung nicht beim Laden oder Programmgesteuerten abändern.


private bool cellFormating;


private void dataGridViewPreise_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {          

            if (e.RowIndex >= 0 && e.ColumnIndex >= 0 && !cellFormating)
            {
                #region Einfärben rot grün teuer billig
                //Die letzte Zeile bleibt unberührt, hier werden die Summen addiert und ausgegeben in Rot/Grün
				//Berrechnet wird nur wenn Spalte/Column2 formatiert wird 
				
                if (e.RowIndex != dataGridViewPreise.Rows.Count - 1 && e.ColumnIndex == 2)
                {
                    int colCount = dataGridViewPreise.Columns.Count;
                    // Als Standart schwarz 
                    dataGridViewPreise.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Black;

                    // Letzte zeile die niedrige und höchste summe berechnen und färben rot /grün 
                    decimal summe = 0;
                    decimal summeNiedrig = 0;
                    decimal summeHoch = 0;
                    int cellSummeNiedrig = 0;
                    int cellSummeHoch = 0;
					
					// fängt an bei Column6, da vorher Beschreibung etc. ausgegeben wird
                    for (int cols = 6; cols < colCount; cols+=2) 
                    {
						if (dataGridViewPreise.Rows[e.RowIndex].Cells[cols].Value.ToString() != "")
                            {
                                summe = Convert.ToDecimal(dataGridViewPreise.Rows[e.RowIndex].Cells[cols].Value);

                                if (summe > summeHoch)
                                {
                                    summeHoch = summe;
                                    cellSummeHoch = cols;

                                    if (summeNiedrig == 0)
                                    {
                                        summeNiedrig = summe;
                                        cellSummeNiedrig = cols;
                                    }
                                }
                                else if (summe < summeHoch)
                                {
                                    summeNiedrig = summe;
                                    cellSummeNiedrig = cols;
                                }
                            }
                    }

                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeNiedrig].Style.ForeColor = Color.Green;
                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeHoch].Style.ForeColor = Color.Red;
                }

                #endregion
                //di Summen in der Letzen Spalte, gesondert in einer Methode berrechnet, bei CellValueChange und beim Laden
                else if (e.RowIndex == dataGridViewPreise.Rows.Count - 1 && e.ColumnIndex == 2)
                {
                    e.CellStyle.BackColor = Color.LightGray;
                    float FontSize = dataGridViewPreise.DefaultCellStyle.Font.Size;
                    string FontName = dataGridViewPreise.DefaultCellStyle.Font.FontFamily.ToString();
                    e.CellStyle.Font = new Font(FontName, FontSize + 3, FontStyle.Bold);

                    int colCount = dataGridViewPreise.Columns.Count;

                    // letzte zeile die niedrige und höchste summe bererchnen und färben rot /grün eventuell ein Bild in celle bei ep
                    decimal summe = 0;
                    decimal summeNiedrig = 0;
                    decimal summeHoch = 0;
                    int cellSummeNiedrig = 0;
                    int cellSummeHoch = 0;
                    for (int cols = 6; cols < colCount; cols+=2) // fängt an bei 6
                    {
                        summe = Convert.ToDecimal(dataGridViewPreise.Rows[e.RowIndex].Cells[cols].Value);

						if (summe > summeHoch)
						{
							summeHoch = summe;
							cellSummeHoch = cols;

							if (summeNiedrig == 0)
							{
								summeNiedrig = summe;
								cellSummeNiedrig = cols;
							}
						}
						else if (summe < summeHoch)
						{
							summeNiedrig = summe;
							cellSummeNiedrig = cols;
						}
                    }
					
					cellFormating = true;
                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeNiedrig].Style.ForeColor = Color.Green;
                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeHoch].Style.ForeColor = Color.Red;
                }
            }
        }
		
private void dataGridViewPreisspiegel_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
	rechneBillgsteAnbieter(e.RowIndex, e.ColumnIndex);
	cellsEingefärbt = false;
}

Zu dem Profiler ist das der Leistungsprofiler ? (Analysieren>Leistungsprofiler)

05.07.2018 - 08:22 Uhr

Moin,

ich habe ein DGV in dem manuell Spalten hinzugefügt werden die einen Einheitspreis und einen
Gesamtpreis beinhalten. Der niedrigere Wert bekommt die Font-Color Grün, der höhere Rot.
Funktioniert alles gut, lediglich Teile meiner GUI frieren ein und der GC sammelt sich dusselig.
Steh aber irgendwie auf dem schlauch hierbei...


private void dataGridViewPreise_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {          

            if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
            {
                #region Einfärben rot grün teuer billig
                //Die letzte Zeile bleibt unberührt, hier werden die Summen addiert und ausgegeben in Rot/Grün
				//Berrechnet wird nur wenn Spalte/Column2 formatiert wird 
				
                if (e.RowIndex != dataGridViewPreise.Rows.Count - 1 && e.ColumnIndex == 2)
                {
                    int colCount = dataGridViewPreise.Columns.Count;
                    // Als Standart schwarz 
                    dataGridViewPreise.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Black;

                    // Letzte zeile die niedrige und höchste summe berechnen und färben rot /grün 
                    decimal summe = 0;
                    decimal summeNiedrig = 0;
                    decimal summeHoch = 0;
                    int cellSummeNiedrig = 0;
                    int cellSummeHoch = 0;
					
					// fängt an bei Column6, da vorher Beschreibung etc. ausgegeben wird
                    for (int cols = 6; cols < colCount; cols++) 
                    {
						// jede zweite spalte mit dem EP
                        if (cols % 2 == 1 && dataGridViewPreise.Rows[e.RowIndex].Cells[cols].Value != null) 
                        {
                            if (dataGridViewPreise.Rows[e.RowIndex].Cells[cols].Value.ToString() != "")
                            {
                                summe = Convert.ToDecimal(dataGridViewPreise.Rows[e.RowIndex].Cells[cols].Value);

                                if (summe > summeHoch)
                                {
                                    summeHoch = summe;
                                    cellSummeHoch = cols;

                                    if (summeNiedrig == 0)
                                    {
                                        summeNiedrig = summe;
                                        cellSummeNiedrig = cols;
                                    }
                                }
                                else if (summe < summeHoch)
                                {
                                    summeNiedrig = summe;
                                    cellSummeNiedrig = cols;
                                }
                            }
                        }
                    }

                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeNiedrig].Style.ForeColor = Color.Green;
                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeHoch].Style.ForeColor = Color.Red;
                }

                #endregion
                //di Summen in der Letzen Spalte, gesondert in einer Methode berrechnet, bei CellValueChange und beim Laden
                else if (e.RowIndex == dataGridViewPreise.Rows.Count - 1 && e.ColumnIndex == 2)
                {
                    e.CellStyle.BackColor = Color.LightGray;
                    float FontSize = dataGridViewPreise.DefaultCellStyle.Font.Size;
                    string FontName = dataGridViewPreise.DefaultCellStyle.Font.FontFamily.ToString();
                    e.CellStyle.Font = new Font(FontName, FontSize + 3, FontStyle.Bold);

                    int colCount = dataGridViewPreise.Columns.Count;

                    // letzte zeile die niedrige und höchste summe bererchnen und färben rot /grün eventuell ein Bild in celle bei ep
                    decimal summe = 0;
                    decimal summeNiedrig = 0;
                    decimal summeHoch = 0;
                    int cellSummeNiedrig = 0;
                    int cellSummeHoch = 0;
                    for (int cols = 6; cols < colCount; cols++) // fängt an bei 6
                    {
                        if (cols % 2 == 1) // jede zweite spalte 
                        {
                            summe = Convert.ToDecimal(dataGridViewPreise.Rows[e.RowIndex].Cells[cols].Value);

                            if (summe > summeHoch)
                            {
                                summeHoch = summe;
                                cellSummeHoch = cols;

                                if (summeNiedrig == 0)
                                {
                                    summeNiedrig = summe;
                                    cellSummeNiedrig = cols;
                                }
                            }
                            else if (summe < summeHoch)
                            {
                                summeNiedrig = summe;
                                cellSummeNiedrig = cols;
                            }
                        }
                    }
                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeNiedrig].Style.ForeColor = Color.Green;
                    dataGridViewPreise.Rows[e.RowIndex].Cells[cellSummeHoch].Style.ForeColor = Color.Red;
                }
            }
        }

13.10.2017 - 10:36 Uhr

Danke @p!ille!
Zumindest klappt VS mit STRG + M + L schon mal alles inkl. #region zusammen.
Leider aber auch alles bis zu dem Namespace inkl. aller Klassen.

12.10.2017 - 12:38 Uhr

Ich habe nun auf VisualStudio 2017 umgestellt und komme
nach langer Suche nicht mit den Zusammenklappen/Aufklappen Shortcuts klar.

In den älteren Versionen habe ich mit STRG-M+O Alle Funktionen und auch #region'en
zugeklappt.

In der 2017er kann ich nur die Aktuelle #region oder einzelne mit Strg-M, Strg-M zuklappen,
Strg-M, Strg-L alle aufklappen.
Das zuklappen dauert lange bei 10 offenen #region Abschnitten, da ich jede anklicken muss und
diese offen bleiben.

Wie kann ich auch alle Regionen mit einem Shortcut zuklappen?

01.07.2016 - 16:03 Uhr

Muss nochmal dieses Thema hier auffrischen, da ich eine Lösung habe, nur leider etwas performancedürftig:

Main Form1 hat ein DataGridView etc.

über einen Aufruf einer Methode
bekomme ich ein Eingabe-Fenster in dem ich wiederum Eingabefenster etc... und
Bearbeitungsfenster öffnen kann.

Code der Form1 mit dem Öffnen des Dialoges und dem ausgrauen mit der Form2gray:


private void button1_Click(object sender, EventArgs e)
        {
            // das transparente Form zuerst laden, dauert aber länger obwohl 
            // nicht viel geladen werden muss !?

            Form2gray gr = new Form2gray();
            gr.Show();
            FormEingabe frm = new FormEingabe();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                // Code ausführen ...
                int idA = frm._ladeId;
                gr.Close();
            }
            else
            {
                gr.Close();
            }
        }

Das "zeischenform" wird nicht in der Taskleiste angezeigt, und schließt
mit Beenden des Dialoges, aber es dauert lange bis das Form geladen ist X(

Code von dem "zwischenform":


 private void Form2gray_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "Form2gray";
            this.Opacity = 0.5D;
            this.Text = "";
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

            // die Taskleiste soll bedienbar bleiben
            Left = Top = 0;
            Width = Screen.PrimaryScreen.WorkingArea.Width;
            Height = Screen.PrimaryScreen.WorkingArea.Height;
        }


Würde das ganze gerne schöner gestalten ...

09.06.2016 - 15:05 Uhr

Da ich selber viel von meinem Eigenen Programm eingebunden habe,
muss ich da erst ein "verständliches" Snippet von erstellen,
aber ich werde es dann demnächst hier mal posten.

07.06.2016 - 14:36 Uhr

Also habe es nun geschafft die Formatierung zu behalten, bitte um Verbesserungsvorschläge!

(- 9.6.15 kleine Anpassungen


   /// <summary>
        /// Gibt eine RichTextBox aus mit WordWrap absätzen und gleibleibentem Style
        /// </summary>
        /// <param name="rtbIn">RichTextBox</param>
        /// <returns></returns>

  private RichTextBox wordWrapRtf(RichTextBox rtbIn)
        {
            RichTextBox rtbOut = new RichTextBox();           
            //rtbOut bekommt den Text mit Style von rtbIn übergeben, zusätzlich werden die
           // WordWrap Umbrüche am Ende RichTextBox eingefügt

            int lineCount = rtbIn.GetLineFromCharIndex(rtbIn.Text.Length);
            bool neuerAbsatz = false;
            bool absatzErstellt = true;

            for (int i = 0; i < lineCount + 1; i++)
            {
                int start = rtbIn.GetFirstCharIndexFromLine(i);
                int end = i < lineCount ? rtbIn.GetFirstCharIndexFromLine(i + 1) : rtbIn.TextLength;
                                
                if (absatzErstellt)
                {
                    neuerAbsatz = false;
                }
                else
                {
                    neuerAbsatz = true;
                }
                for (int rChar = start; rChar < end; rChar++)
                {
                    string toAppend = rtbIn.Text[rChar].ToString();

                    if (toAppend == "\n")
                    {
                        absatzErstellt = true;
                        rtbOut.AppendText(Environment.NewLine);
                    }
                    else 
                    {
                        
                        if (neuerAbsatz)
                        {
                            rtbOut.AppendText(Environment.NewLine);
                            rtbOut.AppendText(toAppend);
                            neuerAbsatz = false;
                        }
                        else
                        {
                            absatzErstellt = false;
                            rtbOut.AppendText(toAppend);
                        }
                        rtbOut.Select(rtbOut.TextLength - 1, 1);
                        rtbIn.Select(rChar, 1);

                        rtbOut.SelectionAlignment = rtbIn.SelectionAlignment;
                        rtbOut.SelectionBullet = rtbIn.SelectionBullet;
                        rtbOut.SelectionColor = rtbIn.SelectionColor;
                        rtbOut.SelectionFont = rtbIn.SelectionFont;
                        rtbOut.SelectionHangingIndent = rtbIn.SelectionHangingIndent;
                        rtbOut.SelectionIndent = rtbIn.SelectionIndent;
                        rtbOut.SelectionCharOffset = rtbIn.SelectionCharOffset;
                    }                   
                }
            }
            return  rtbOut;
        }

07.06.2016 - 10:11 Uhr

Ist in meinem Fall so, das ich den RichTextBox Text
in einer DB speicher.

Beim Drucken laden aus der DB, Parse den rtf-Text in eine pdf-Datei,
wo ich dann nur die Umrücke \n\t habe um ordentlich zu drucken
und leider nicht die

LaTino hat mich aber auf eine Idee gebracht,
das ich jetzt mal versuche den rtf-Text vor dem speichern
in die DB neu schreibe.

Bei LaTino's Tip geht leider die Formatierung verlorgen,
da ich ja nur den Text habe, ich habe den rtf-String ändern muss...

07.06.2016 - 08:57 Uhr

Nach "new" hätte ich hier gerne den Zeilenumbruch:


"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1031{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs44 Am Ende hier soll ein new Line kommen \\fs17\\par\r\n}\r\n"

Erst nach "ENTER" kommt ein Zeilenumbruch.

@Taipi88:
Es wird zum Drucken übergeben, soll aber
in einer Spalte nur die breite der RichTextBox haben.
Der Anwender sieht also in der RichTextBox schon die
breite die auch ausgedruckt wird.

07.06.2016 - 08:08 Uhr

Also Zeilenumbruch gibt es ja, ich will ihn aber automatisch bei einem WordWrap also am Control-Ende oder aber auch nach einer gewissen länge haben.

Das ist ja mein Problem, ich will nicht immer den ganzen Text zusammensetzen
weis mir aber keinen Rat wie ich das realisiere...

06.06.2016 - 18:35 Uhr

Sorry:


 private void rtb1_TextChanged(object sender, EventArgs e)
        {
            RichTextBox txbe = (sender as RichTextBox);

            int loc = txbe.SelectionStart;
            // die Cursor Location

            List<string> wrapedText = new List<string>();
            wrapedText = WordWrap(rtb1.Text, 30);
            // der bei leerzeichen geteilte Text aus der rtb

            string linedText = "";
            // der neue Text, getrennt für den späteren Print

            foreach (string lineText in wrapedText)
            {
                linedText += lineText + Environment.NewLine;
                // ein Absatz nach jeder Zeile
            }
            
            rtb1.Text = linedText;
            // der fertige Text ausgeben
            txbe.Text.Replace('$', '%');

            txbe.SelectionStart = loc;
            // der Cursor zum Ende der rtb (richTextBox)

            
        }

        /// <summary>
        /// wandelt einen string nach einer bestimmten anzahl von Zeichen in eine List (mehrere Zeilen) um
        /// </summary>
        /// <param name="input">Der zu verwendente String</param>
        /// <param name="maxCharacters">Maximale Zeichen pro Zeile</param>
        /// <returns></returns>
        public static List<string> WordWrap(string input, int maxCharacters)
        {
            List<string> lines = new List<string>();

            if (!input.Contains(" ") && !input.Contains("\n"))
            {
                int start = 0;
                while (start < input.Length)
                {
                    lines.Add(input.Substring(start, Math.Min(maxCharacters, input.Length - start)));
                    start += maxCharacters;
                }
            }
            else
            {
                string[] paragraphs = input.Split('\n');

                foreach (string paragraph in paragraphs)
                {
                    string[] words = paragraph.Split(' ');

                    string line = "";
                    foreach (string word in words)
                    {
                        if ((line + word).Length > maxCharacters)
                        {
                            lines.Add(line.Trim());
                            line = "";
                        }

                        line += string.Format("{0} ", word);
                    }

                    if (line.Length > 0)
                    {
                        lines.Add(line.Trim());
                    }
                }
            }
            return lines;
        }

Ich habe hier eben das noch gefunden, weis aber nicht wie ich es mit dem TextChangedEvent verbinden kann...

06.06.2016 - 18:05 Uhr

**9.06.15 GELÖST
Falls Interesse besteht wie man eine richTextBox dann auf eine
PDF bekommt, kann ich gerne weiterhelfen.

Der Vorteil ist, genau die breite und Absätze wie in der RichTextBox
gesehen werden, sind auch auf der PDF-Seite so dargestellt.**

Moinsen,

ich such nun schon etwas länger an einer Lösung beim schreiben
in eine RichTextBox nach einem Einstellbarem MaxChar automatisch
eine neue Zeile hinzuzufügen. Auf der Suche bei Google
hat keine Lösung funktioniert.

Ich komme hier irgendwie durcheinander und dreh mich im Kreis 🤔 :


 private void rtb1_TextChanged(object sender, EventArgs e)
        {
            List<string> wrapedText = new List<string>();
            wrapedText = WordWrap(rtb1.Text, 30);
            string linedText = "";
            foreach (string lineText in wrapedText)
            {
                linedText += lineText;
            }
            rtb1.Text = linedText;
        }

        public static List<string> WordWrap(string input, int maxCharacters)
        {
            List<string> lines = new List<string>();

            if (!input.Contains(" ") && !input.Contains("\n"))
            {
                int start = 0;
                while (start < input.Length)
                {
                    lines.Add(input.Substring(start, Math.Min(maxCharacters, input.Length - start)));
                    start += maxCharacters;
                }
            }
            else
            {
                string[] paragraphs = input.Split('\n');

                foreach (string paragraph in paragraphs)
                {
                    string[] words = paragraph.Split(' ');

                    string line = "";
                    foreach (string word in words)
                    {
                        if ((line + word).Length > maxCharacters)
                        {
                            lines.Add(line.Trim());
                            line = "";
                        }

                        line += string.Format("{0} ", word);
                    }

                    if (line.Length > 0)
                    {
                        lines.Add(line.Trim());
                    }
                }
            }
            return lines;
        }

sobald ich einen Buchstabe eingebe, ist ja der Cursor wieder vorne,
vielen Dank schon mal für Hilfe.

10.05.2016 - 17:36 Uhr

Das wäre jetzt die Frage, ob man den DataReader unterbrechen kann,

mit dem Reader Zeile für Zeile auslesen ist hier dann wohl die Lösung,
und mit folgendem Ansatz kann ich das ganze auch Stoppen 👍


private volatile bool _IsRunning;
private static readonly object runLock = new object();

public void Start()
{
    lock (runLock)
    {
        if (_IsRunning == true)
            return;
        _IsRunning = true;
        (new System.Threading.Thread(new System.Threading.ThreadStart(SendLoop))).Start();
    }
}

public void Stop()
{
    lock (runLock)
    {
        _IsRunning = false;
    }
}

private void loadTable()
{
    while (_IsRunning)
    {
         //SQL Reader Zeile für Zeile auslesen
    }
}


10.05.2016 - 14:15 Uhr

Ich habe hier einen Thread den ich nach Doppelten Einträgen suchen lasse
nach diesem Beispiel:

private void buttonLoad_Click(object sender, EventArgs e)
    {
        progressBar.Visible = true;
        progressBar.Style = ProgressBarStyle.Marquee;
        System.Threading.Thread thread = 
          new System.Threading.Thread(new System.Threading.ThreadStart(loadTable));
        thread.Start();
    }

private void loadTable()
    {
        // Load your Table...esc
        DataTable table = new DataTable();
        SqlDataAdapter SDA = new SqlDataAdapter();
        SDA.Fill(table);
        setDataSource(table);
    }

internal delegate void SetDataSourceDelegate(DataTable table);
    private void setDataSource(DataTable table)
    {
        // Invoke method if required:
        if (this.InvokeRequired)
        {
            this.Invoke(new SetDataSourceDelegate(setDataSource), table);
        }
        else
        {
            dataGridView.DataSource = table;
            progressBar.Visible = false;
        }
    }

Zusätzlich bekomme ich hierüber noch Info's für ein Label oder eine ProgressBar aus dem laufenden Thread:


private delegate void SetControlPropertyThreadSafeDelegate(
    Control control, 
    string propertyName, 
    object propertyValue);

public static void SetControlPropertyThreadSafe(
    Control control, 
    string propertyName, 
    object propertyValue)
{
  if (control.InvokeRequired)
  {
    control.Invoke(new SetControlPropertyThreadSafeDelegate               
    (SetControlPropertyThreadSafe), 
    new object[] { control, propertyName, propertyValue });
  }
  else
  {
    control.GetType().InvokeMember(
        propertyName, 
        BindingFlags.SetProperty, 
        null, 
        control, 
        new object[] { propertyValue });
  }
}

Mein Problem jetzt nur noch:

Ich möchte gerne den Thread beenden oder Abbrechen,
um dann die bisher geladenen Einträge in den DataTable anzuzeigen,
habe aber keine Lösung gefunden, kann mir jemand helfen?

22.04.2016 - 11:17 Uhr

Jetzt funktioniert es wie gewünscht! Danke @LaTino

return Decimal.TryParse(expression.ToString(), NumberStyles.Any, CultureInfo.CurrentCulture, out retNum);
21.04.2016 - 10:33 Uhr

Moin,

bei einigen Textboxen prüfe ich vor einer Berrechnung auf Numerische
eingaben/Dezimalzahlen:


     public static decimal TbToDecimal(TextBox tb)
        {
            decimal endWert = 0;

            if (IstNumeric.IsNumeric(tb.Text))
            {
                endWert = Convert.ToDecimal(tb.Text);
            }
            else
            {
                MessageBox.Show("Bitte eine Zahl eingeben!");
                tb.SelectAll();
            }

            return endWert;
        }

        public static bool IsNumeric(object Expression)
        {
            decimal retNum;

            bool isNum = Decimal.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, 
System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
            return isNum;
        }


Bei einigen Berrechnungen mit Zwischenergebnissen in einer Textbox kommt ein
Punkt 3 Stell vor dem Komma, welches mir die der TryParse nicht annimmt,
als Dezimalwert wird es aber angenommen !? Was läuft da falsch?


tbGesamtXXX.Text = summeXY.ToString("#,0.00");

folgendes Funzt:


tbGesamtXXX.Text = summeXY.ToString("0.00");

15.04.2016 - 08:27 Uhr

Moin!

Beim Debuggin Starten kommen von 3-4 BIN\debug\xxx.dbl Bibliotheken
der Fehler:> Fehlermeldung:

... Fehler beim Zugriff auf OLE-Registrierung...

Starte ich ein zweites mal, gelingt das ganze ohne Fehlermeldung 🤔

07.04.2016 - 18:27 Uhr

Danke! Jetzt klappt das ganze!
Leider aber steh ich vor der nächsten Hürde 😦

HIER
bekomme ich alle Images per Drag 'n' Drop rein, nur diese
nicht.

Ich habe im ImageListViewNavigationManager folgendes schon geändert:

 
if (!selfDragging && e.Data.GetDataPresent(DataFormats.FileDrop))
                    e.Effect = DragDropEffects.Copy;
                else if (e.Data.GetDataPresent("FileContents"))
                    {
                    e.Effect = DragDropEffects.All;
                    }
                else
                    e.Effect = DragDropEffects.None;

bei Drag Enter kommt aber immer der durchgestrichene Kreis.

07.04.2016 - 15:42 Uhr

Bei iPad Access habe ich nichts
sinnvolles brauchen können für Drag N' Drop, wie ich das verstehe, geht es ja dort
darum mit dem WIA Treiber(Scanner, Kamera) zu Importieren.

Die Sache bei stackoverflow- Drag'n'Drop files iPhone ..
sieht schon interessanter aus, allerdings stehe ich hier auf auf dem Schlauch und
finde keine Info's zu dem Datentyp des Drops.

Bei dieser Version habe ich es hinbekommen,
die Dateien mittels FileStream zu erstellen, das Problem ist jedoch noch der Dateiname. Er wird leider
gekürzt, aus "IMG_6020.jpg" wird "G_6020.jpg"

06.04.2016 - 11:22 Uhr

Mittels Drag & Drop ziehe ich Bilder in ein
Explorer. Aus dem Windows Explorer funktioniert das
bei allem, jedoch nicht bei einem angeschlossenen
iPad/iPhone vom internen Speicher.

Da handelt es sich um einen DCF Filesystem.

Zum Testen:


private void listBox1_DragEnter(object sender, DragEventArgs e)
        {   
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.Move;            
        }

private void listBox1_DragDrop(object sender, DragEventArgs e)
        {
            string[] FileList = (string[])e.Data.GetData(DataFormats.FileDrop, false);                        
        }

Bei einem Bild von der Festplatte habe ich in der FileList den Pfad,
bei einem Bild vom iOS Gerät aber st es anscheinend kein FileDrop - Format.
Aber der Drag & Drop Vorgang von iOS Gerät zu Windows Ordner funktioniert ja,
kann mir jemand helfen?

09.02.2016 - 15:53 Uhr

Wie aber sieht dann die feine Art aus bei einer sehr großen Tabelle bzw. DGV
mit verknüpften Daten am Main-Form.

Zur Datenänderung/Erstellung weitere Eigenschaften hinterlegen, etc.
kommt dann der Dialog. Wo kann ich dann den Dialog einbinden aus Platzgründen
doch eigentlich nicht möglich...

09.02.2016 - 15:33 Uhr

Also:

Ich habe ein Main-Form - maximiert.

Darauf rufe ich einzelne Form's als Dialoge
auf, die sich mittig in dem großen Main-Form zentrieren.

Die Benutzeringabe am Main-Form ist wegen dem Dialogaufruf ja
schon unterbunden, das einzigste Problem ist,
das ich dem Nutzer den Dialog noch besser sichtbar machen will,
damit er erst nicht mehrmals am Main-Form rumdrückt und dann erst merkt,
ohh - hier ist ja ein Fenster in der Mitte!

Ich hoffe ich habe es so verständlich erklärt 😁

09.02.2016 - 14:11 Uhr

Das Problem ist ich weis keinen Rat an die Sache ranzugehen...

es soll ja nicht Trasparent sein, ehr als wenn man durch ein Milchglas schaut,
bzw dass die hinteren Fenster verschwommen erscheinen.

Meine mögliche Variante einfach ein UserControl darüberzulegen welches
teiltransparent ist fällt leider weg, da es

this.Opacity = 0.83;

im UserControl nicht möglich ist...

weis keiner einen Rat?

09.02.2016 - 10:46 Uhr

Hallo,

viele Benutzer haben ein Problem mit kleinen Dialogen die sich auf einem
maximiertem Fenster öffnen und wegen dem kleinen Rahmen nicht unterscheiden können
was jetzt aktiv ist.

Kann man die Transparenz der hinteren Fenster bzw. die nicht aktiven Fenster ändern oder
auch für andere Lösungsvorschläge wäre ich dankbar.

12.01.2016 - 20:42 Uhr

Vielen Dank, werde FrontFace und die Anleitung mal probieren.

Wenn mir das nicht gefällt, muss ich mir da was eigenes wie Abt beschrieben hat
erstellen.

11.01.2016 - 20:02 Uhr

Ich habe eine Hausautomation geplant/am Testen mit KNX.

Die normlen Hersteller-Terminals bzw. Interface's für KNX sind sehr teuer und als günstige Lösung soll ein Raspberry Pi als Homeserver, ein günstiges (<150€) Tablet mit Win10, IntelAtom und HD-IPS-Panel "in" die Wand kommen.

Als Software setzte ich FHEM mit SmartVisu was auf einem Webserver (rasp) läuft.

Jetzt möchte ich gerne den Tablet so haben, das wenn ich den anschalte (aus dem Standby u. Neustart) das der Firefox/Chrome etc. gleich im Vollbildmodus die Adresse von SmartVisu startet und keine andere Funktion erreichbar ist (nur als Admin) In Hotels etc. gibt's das ja öfters das man nur den Inet-Explorer bedienen kann. Bei Tante Gockel finde ich auch nix...

Welche Lösung gibt es da? Ich könnte mir auch ein Lösungsvorschlag mit LINUX Distu. vorstellen, wegen dem Energieverbrauch/Auslastung...

16.11.2015 - 14:53 Uhr

Sorry, vielen Dank!
(Ich hab wirklich geguurkelt 🤔)