In meinem Programm wird ein anderes aufgerufen, hier der Code dazu
string mPGM = ArrAlbum[iNr].albP20 ; // Lw:\Pfad\Programmname
string mPARA = ArrAlbum[iNr].albP21; // Parameter
Process M = new Process();
M.StartInfo.FileName = mPGM;
M.StartInfo.Arguments = mPARA;
M.StartInfo.UseShellExecute = false;
M.StartInfo.RedirectStandardError = false;
M.StartInfo.RedirectStandardOutput = false;
M.StartInfo.RedirectStandardInput = false;
M.StartInfo.Verb = "runas";
M.Start(); // <== Hier kommt der Fehler
M.WaitForExit();
Im Debug-Modus kommt diese Fehlermeldung bei M.Start();
System.ComponentModel.Win32Exception:
Der angeforderte Vorgang erfordert erhöhte Rechte.
Wenn ich das Programm mit "Als Administrator" starte, kommt die Meldung nicht.
Auch wenn ich VS2019 "Als Administrator" und darüber im Debug-Modus das Programm ausführe, ist alles OK.
Wenn ich im Release-Modus arbeite, kommt der Fehler ebenfalls nicht.
Es muss also dieser Aufruf eines anderen Programmes in Verbindung mit Debug die Ursache sein.
Kann man da irgendwo etwas einstellen ? Oder ist das einfach so ?
Nachtrag 10:32 ----
Ich habe die Debug-Version des Programmes in anderen Windows-Versionen getestet:
WinXP: funktioniert
Win7: funktioniert
Win8.1: es kommt die Fehlermeldung
Das Benutzerkonto ist Administrator und hat die Rechte auf "nie benachrichtigen", also Schieberegler steht ganz unten.
@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