@hkdd sagte in Richtextbox im Formular verankern.:
@Jockelx
Margin - alle Werte stehen auf 3
Scherzkeks. Ich meinte, ob du margin-top mal auf 50 oder so gesetzt hast, statt mit top und ClientSizeChanged zu arbeiten.
(Ernste Frage, keine Ahnung wie sich Win-Forms da so verhält)
Nur ganz kurz zum Fehler: Im meinem fehlerhaften Programm werden zwei Objektinstanzen von UserControl1 erstellt. Einmal: UserControl1 us = new UserControl1(); und eh.Child = new UserControl1(); Auf dem zweiten Objekt, das an eh.Child gebunden wird, wird nicht Funktion1() aufgerufen, so dass das Panel nicht rot gefärbt wird. Funktion1() wird nur für das erste Objekt aufgerufen, und dies ist nicht das Objekt, das an eh.Child gebunden wurde. Es muss nicht heissen: eh.Child = new UserControl1();, sondern eh.Child = us; Deinen ersten Beitrag habe ich nicht gleich verstanden, aber schön, dass das ganze funktioniert. Da ich WinForms gegenüber WPF bevorzuge, kann ich mit WinForms nun auch 3D Graphik machen. Nochmals Danke Euch !!!
Glaube ich nicht, sieht so aus als wenn du bestenfalls 100% Speicherbandbreite ausnutzen könntest. Hab aber nicht komplett verstanden, was das sein soll.
@hkdd
Ich hab den von dir gezeigten Code mit dem PDF Printer probiert, da kann man die Seiten schon einstellen. Nur wird halt trotzdem alles gedruckt. Sieht so aus als müsse sich das PrintDocument (bzw. dessen PrintPage Event Handler) selbst darum kümmern dass nur das gedruckt wird was eingestellt wurde.
@AndyDD sagte in Stringfunktionen Char.IsSymbol():
min. Passwortlänge 8 Stellen, aus Buchstaben, Ziffern, Groß- und Kleinschreibung, Sonderzeichen 3 Merkmale, keine Pattern, kein Vorname, Nachname, Anmeldename als Bestandteil. Und die Härte: Passwortlebensdauer 40 Tage sowie keine Übereinstimmung mit den letzten 3 Passwörtern. Das ist echt überholt aber wenn wir es nicht umsetzen gibts keine Freigabe. Habe erst kürzlich einen Artikel gelesen, wo stand, dass die Vergrößerung der Anzahl der Zeichen mehr bringt als Groß-/Kleinschreibung, Sonderzeichen etc.
So ist es. Unsafe by design, denn nun ist jeder Nutzer gezwungen, ein einfaches 7-Zeichen Passwort zu haben, mit einem 8. Zeichen, dass er alle 40 Tage um 1 hochzählt. Aber ich verstehe schon von woher du kommst mit der Zertifizierung. Kein Vorwurf an dich, sondern Mitleid.
@Dravere ,
ich habe mal beide Lösungen gemeinsam getestet, es gibt die gleichen Ergebnisse. Deine Lösung ist eleganter und ohne unsicheren Code. Danke für die Hinweise
-----------HexToDecimal-----------
HexString=112233445566778899AABBCC
Decimal-hkdd =5302590746052724293842418636
Decimal-Dravere=5302590746052724293842418636
---------DecimalToHex-(1)---------
decimal=123456789012345678901234
HexStr-hkdd =1A249B1F10A06C96AFF2
HexStr-Dravere=1A249B1F10A06C96AFF2
---------DecimalToHex-(2)---------
decimal=1234
HexStr-hkdd =4D2
HexStr-Dravere=4D2
---------DecimalToHex-(3)---------
decimal=1234,00
HexStr-hkdd =4D2
HexStr-Dravere=4D2
---------DecimalToHex-(4)---------
decimal=1234,5678
HexStr-hkdd =4D2
HexStr-Dravere=4D2
@Swordfish
Hallo Swordfish,
Das mit dem Crosslink wusste ich nicht.
Mache ich das nächste mal.
Einen Supporvertrag gib es natürlich auch nicht.
Aber wenn ein Problem gelöst ist, woher auch immer, dann setze ich die Lösung auch in die anderen Threads.
Aber inzwischen bin ich selbst einen Schritt weiter gekommen.
Habe wohl auch etwas treffendere Suchbegriffe verwendet.
Z.B.: https://social.msdn.microsoft.com/Forums/windows/en-US/7471dd6e-aced-4131-875b-ff2c645adbd9/how-to-disable-editing-in-the-existing-rows-in-a-datagridview-and-allow-the-user-to-add-new-row-to?forum=winformsdatacontrols
protected void Gv_Condition_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView gv = (GridView)sender;
GridViewRow gvr = gv.Rows[e.NewEditIndex];
e.Cancel = true;
Pn_UpdateCondition.Visible = true;
TableCell tc = gvr.Cells[0];
tc = gvr.Cells[1];
.....
Ich habe das "e.Cancel = true;" in die Function reingesetzt.
Nun geht es wieder.
Es ist schon sau blöd, wenn gleich drei Fehler hintereinander geschaltet sind.
Zunächst hatte ich nur Angaben für die Definition des Gridview im aspx gefunden, wo nur der Parameter AutoGenerateColumns="False" angegeben wurde.
Und auch lange Zeit nichts weiter dazu.
Das hatte wohl unter .net 2.0 gereicht.
Warum sich Microsoft keine besseren und von vornherein eindeutigere Definitionen und Funktionen einfallen lässt bleibt mir schleierhaft.
Vielen Dank noch an alle, die sich durch meine Quelltexte gelesen hatten.
Grüsse
Helmut
Nach tagelangem Suchen, und auch mit Burkhis Hinweis, habe ich es nun doch hinbekommen.
Folgende Anpassungen.
In der" web.config":
<pages clientIDMode="Static">
Ich habe den clientIDModeergänzt. am Textfeld habe ich nichts geändert.
In der "page.master" habe ich die neue Function wie folgt ausgelegt:
function ProcessChildMessage(message) {
var pos = message.lastIndexOf("$");
if (pos >= 0) {
var fieldvalue = message.substr(pos + 1);
var pos2 = fieldvalue.lastIndexOf("=");
if (pos2 > 0) {
var myfield = fieldvalue.substr(0, pos2);
var myvalue = fieldvalue.substr(pos2 + 1);
document.getElementById(myfield).value = myvalue;
} else {
alert(fieldvalue);
}
} else {
alert(message);
}
return true;
}
Die alte Methode, die Werte zu übergeben habe ich fallen lassen.
Danke nochmals für eure Antworten.
Grüsse
Helmut
Inzwischen bin ich etwas klüger geworden.
Musste dazu eben nochmal 20 oder 30 Stunden investieren.
Dabei hat mir dann mein anderer Thread mit dem DatePicker geholfen.
Also leider keine Hilfe von euch.
Ich habs selber raus bekommen, mit Hilfe von
https://weblogs.asp.net/scottgu/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series
und etwas durch die Beiträge im anderen Thread.
Ich habe folgende Anpassungen gemacht.
In der web.config:
<pages clientIDMode="Static">
In der page.master:
function deleteCondition()
{
var ans;
ans=window.confirm('Möchten Sie diesen Zustand wirlich löschen?');
if (ans==true)
{
document.getElementById('hdnbox').value = 'Yes';
}
else
{
document.getElementById('hdnbox').value = 'Yes';
}
return false;
}
```Also über "getElementById"
Aber vielen Dank an alle.
So wie du den StreamReader instanzierst muss die Quelldatei (vonBank.csv) im UTF-8-Format vorliegen. In C# selbst sind dann alle Strings sowieso UTF16, das ist nicht änderbar und auch keine gute Idee daran herumzuwerken.
Dein File scheint aber nicht als UTF-8 vorzuliegen, sonst müsste im Hex-Code für ein "ä" "c3 a4" stehen. Finde raus mit welchem Encoding deine Bank das File ablegt (versuch bspw. mal ISO-8859-1) und gib dann dieses Encoding beim StreamReader an.
MfG SideWinder
Edit: das kommt davon wenn man Tabs aufmacht und nicht refreshed vor dem Antworten.....
Durch das GroupBy sind die Informationen über die einzelnen Zeilen nicht mehr vorhanden. Du mußt also jeweils eigene SELECT-Abfragen stattdessen durchführen.
@Wade1234 sagte in Json - SelectToken - Daten summieren, die ein bestimmtes Alter haben.:
@bruder
diese einstellung solltest du nochmal überdenken......
Naja wenn er niemals professionell Softwareentwicklung machen will, kommt er mit der Einstellung hin. Und für privaten Schmuddelcode ist das dann eben auch ausreichend. Beruflich würde er damit nicht weit kommen, denn sein SeniorDev würde ihn dafür mit dem Kopf zuerst vom Balkon baumeln lassen
Hallo zusammen,
mein Programm zeigt bei Ausführung einen Button sowie eine Tabelle mit 2 Spalten an. Bei Klick auf den Button möchte ich gerne einen speziellen Eintrag in dieser Tabelle ändern. Aber nur diesen einen. Alle anderen Einträge sollen so bleiben wie sie sind.
Folgendes Beispiel zur Veranschaulichung:
[Programmstart]
Eintrag Nummer 1 | Originalwert
Eintrag Nummer 2 | Originalwert
Eintrag Nummer 3 | Originalwert
[Button-Klick]
Eintrag Nummer 1 | Originalwert
Eintrag Nummer 2 | Geänderter Wert
Eintrag Nummer 3 | Originalwert
Wie kann ich das erreichen? Wie muss meine private void OnButtonClick(object sender, EventArgs e)-Funktion aussehen? Vor allem, wie kann ich auf einen speziellen Eintrag in dieser Liste zugreifen?
Um mir besser helfen zu können, poste ich nachfolgend meinen Code. Es handelt sich um eine Xamarin.Android-App, ich arbeite mit einer ListView bzw. mit einem ListAdapter : ArrayAdapter:
public class MyActivity : Activity
{
List List = null;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.MyActivity);
List = PopulateList();
var lv = FindViewById(Resource.Id.list);
var adapter = new ListAdapter(this, Resource.Layout.List, List);
lv.Adapter = adapter;
FindViewById(Resource.Id.button).Click += OnButtonClick;
}
}
class ListAdapter : ArrayAdapter
{
List List;
public ListAdapter(Context Context, int ListId, List List) : base(Context, ListId, List)
{
this.List = List;
}
public override int Count
{
get { return List.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null)
{
LayoutInflater inflater = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
v = inflater.Inflate(Resource.Layout.List, parent, false);
}
v.FindViewById(Resource.Id.name).Text = List[position].Name;
v.FindViewById(Resource.Id.value).Text = "Originalwert";
return v;
}
}
Unter Nutzung folgender *.axml-Dateien:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical"
android:layout_width ="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width ="match_parent"
android:layout_height="wrap_content"
android:text="Click Me"
android:id="@+id/button" />
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/value"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Wie kann ich in der private void OnButtonClick(object sender, EventArgs e)-Funktion auf die entsprechende View zugreifen/diese Verändern?
Wenn ich folgendes mache:
private void OnButtonClick(object sender, EventArgs e)
{
FindViewById(Resource.Id.value).Text = "Geänderter Wert";
}
ändert er den ersten Eintrag der Liste. Aber wie kann ich ausschließlich nur den zweiten ändern (siehe Beispiel)?
Würde mich wirklich sehr freuen, wenn sich jemand meiner annehmen und mir helfen könnte.
Vielen Dank für alle Antworten schon mal im Voraus
Freundliche Grüße
@Th69
Hallo Ihr beiden Helfer.
Wie immer sitzt das Problem vor dem Monitor.
Mein Fehler 1: ich hatte noch 4.5 statt 4.6 oder größer eingestellt. Deshalb war FromUnixTimeSeconds nicht benutzbar. Mit 4.6 klappt es.
Hier mein jetzt funktionierendes Beispiel: Es wird korrekt 20.11.2018 07:56:43 zurück gegeben.
long unixDateTime = 0x5C00DF2A;
var localDateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(unixDateTime).DateTime.ToLocalTime();
@Th69 ,
ich habe Deinen Code ausprobiert, da kommt 20.11.2018 06:56:43 heraus, also eine Stunde weniger 6 Uhr statt 7 Uhr. Das liegt an der Linux-Zeit, die sich i.d.R. nach Greenwich richtet, also eine Stunde vor unserer Zeit. ToLocalTime() bringt das offenbar in Ordnung.
long seconds = 0x5C00DF2A;
var dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(seconds);
DateTime dateTime = dateTimeOffset.DateTime.ToLocalTime();
Ja ist gut. Danke !!! Sauber programmieren muss ich noch lernen. Vielleicht kann man hier abschliessen. Ein gutes neues Jahr 2019, und auf eine weitere gute Zusammenarbeit.