Das ist nur ein Teil des ganzen:
http://homepage.mac.com/bradster/iarchitect/shame.htm
Zum Teil ist das etwas veraltet, ein wenig subjektiv, aber allgemein IMHO noch zum großen Teil zutreffend.
Ist es möglich in einer .net Anwendung Eingaben von einer bestimmten Tastatur(wenn mehrere angesteckt sind) zu empfangen. Diese Eingaben dürfen aber nur zu dieser eine Anwendung gelangen(auch wenn sie nicht den Focus hat).
mein problem ist nun folgendes:
ich hab z.b. 14 datensätze.
d.h ich muss in meinem panel dann 14 zusätzliche zeilen hinzufügen.
und den code im designer kann ich ja nicht ändern.
also muss ich das irgendwo in meinem programm machen.
Nur wie?
bis jetz siehts halt so aus.
public partial class Form1 : Form
{
TableLayoutPanelGrowStyle tblGrowStyle;
public Form1()
{
InitializeComponent();
tblGrowStyle = this.tableLayoutPanel1.GrowStyle;
}
private void b_datei_einlesen_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
this.Activate();
string Filename = openFileDialog1.FileName;
datei_auswerten(Filename);
}
private void datei_auswerten(string dateipfad)
{
FileInfo theSourceFile = new FileInfo(dateipfad);
StreamReader reader = theSourceFile.OpenText();
string strline;
int anzahl = 0;
while ((strline = reader.ReadLine()) != null)
{
if (strline.Contains(@"projekt value"))
{
anzahl++;
}
}
formaufbau(anzahl);
}
private void formaufbau(int zahl)
{
for (int i = 0; i < zahl; i++)
tblGrowStyle = TableLayoutPanelGrowStyle.AddRows;
}
}
Nimm dir ne Variable bool keypressed_w=false;
...setz die bei KeyDown auf true und bei KeyUp wieder auf false.
Das eigentliche Zeichnen dann z.B. via Timer machen...
...und wenn das auch noch zu ruckelig ist, schau mal bei den Spieleprogrammierern hier vorbei
C# Beginner schrieb:
1. Laut meinem Compiler kann man keine parameterlosen Kosntruktoren für Strukturen erstellen. Komischerweise hab ich aber ein Buch "C# lernen" worin genau dies gemacht wird.
Oh, schlechtes Buch. Das geht nämlich wirklich nicht, und zwar, um große Mengen von Strukturen effizient initialisieren zu können. In Deinem Beispiel kann der Compiler z.B. ein großes Array ('new AAA[1000]') einfach dadurch initialisieren, dass er über den gesamten Speicherblock Nullen schreibt. Das ginge nicht, wenn er für jedes Element einen Konstruktor aufrufen müsste.
dmt schrieb:
hi,
ich habe mir dazu eine eigene klasse MyListView geschrieben die von ListView erbt geschrieben:
public class MyListView : ListView
in dieser fange ich das doppelklicken ab:
protected override void OnDoubleClick(EventArgs Ea)
Warum eigendliche eine eigene Klasse ableiten? (oder gibt es noch andere Gründe dafür? ausser dem hier besprochenen?
Du könntest das doch auch so machen, dann hast Du das Problem mit dem Zugriff auf die Combobox gar nicht.
partial class YourForm : Form
{
ComboBox box = new ComboBox()
ListView lv = new Listview();
public YourForm()
{
InitializeComponents()
lv.MouseDoubleClick += new MouseEventHandler(lv_MouseDoubleClick);
}
void lv_MouseDoubleClick(object sender, MouseEventArgs e)
{
// Nur der Vollstöändigkeit halber, in dem Beispiel ist listview == lv
ListView listview = sender as ListView;
box.Items.Add(listview.SelectItem);
}
Ich vermute, Du arbeitest ohne Backbuffer und das ist natürlich katastrophal für die Anzeige. Also: Leg Dir ein Bitmap an, welches den Hintergrund enthält und eines, welches das eigentliche Bild enthält. In jedem Zeichendurchgang zeichnest Du zuerst den Hintergrund ins Bild und dann die Figuren drüber. Ganz zum Schluss rufst Du dann die Invalidate-Methode der Picturebox auf und im Paint-Event der Picturebox zeichnest Du einfach Dein fertiges Bild auf die Hintergrundfläche. So ist der übliche GDI+-Weg.
ein property ist genau das was du mit radius gemacht hast
public double Flaeche
{
get
{
return radius * radius * Math.PI;
}
}
1stes google ergebnis, hf :p
http://ag-kastens.uni-paderborn.de/lehre/material/csharp/Properties.pdf
CStoll schrieb:
Randfrage: Wie unterscheidet denn C# zwischen Wert- und Referenz-Parametern? Vielleicht reicht es ja aus, den zweiten Parameter als call-by-reference anzugeben.
Ja, sollte. Einfach den Parameter als 'ref' oder 'out' deklarieren. (Unterschied: 'ref' erwartet einen gültigen Zeiger, 'out' nicht, sondern nimmt an, dass dieser in der Methode erzeugt wird).
Vorher am besten immer per 'if (InvokeRequired)' testen, ob der Umweg über 'Control.Invoke' überhaupt notwendig ist. Also nach folgendem Schema:
private void UpdateProc() // Generische Methode, die die GUI beeinflussen soll.
{
if (InvokeRequired) {
Invoke(new MethodInvoker(UpdateProc));
return;
}
// Eigentliche Operation.
}
Konrad Rudolph schrieb:
Optimizer schrieb:
Vielleicht hast du es noch nicht versucht, benutze mal irgendwelchen IDE-Features (außer den Build abzubrechen) währenddessen. Zum Beispiel klick den ersten Compilerfehler an und versuch ihn zu richten. Du tippst, nach 2 Sekunden stehen dann erst alle Zeichen da wenn die IDE mal wieder kurz reagiert, ... so kann kein Mensch arbeiten.
So soll man ja auch gar nict arbeiten; erst Buildvorgang unterbrechen, *dann* weiterarbeiten. Zugegeben, das *könnte* die IDE selbst machen aber mich hat's noch nie gestört.
Solche Aussagen kann ich einfach nicht nachvollziehen. Es ist nicht akzeptabel, dass ein GUI einfriert für ein paar Minuten oder ein paar Minuten lang fast einfriert. "so soll man nicht arbeiten", mhm. So kann man nicht arbeiten und das ist scheiße.
Und nach Abschluss oder Abbruch muss man auch ne halbe Minute warten und kann gar nichts machen, ja so sollte man wirklich nicht arbeiten.
Ich hab mir ein kleines HID -Device gebaut, dass der Computer als Tastatur erkennt. Ich schicke nun Keycodes für die gewünschten Tasten zum PC, was auch recht gut funktioniert. Für meine Anwendung würde ich aber gerne die Tasten F13 bsi F24 benutzen, nur zeigt sich der Computer bzw. meine Anwendung sehr unbeeindruckt wenn ich ihr diese Keycodes sende. Wollte nur nachfragen ob das vielleicht ein Problem im dem .net Framework ist, weil es ja mit den anderen Tasten funktioniert.
ich hoofe es kann mir jemand helfen!
Js, mit den WM_NC... methoden funktioniert es, danke.
Manuel schrieb:
Vielleicht reicht es dir auch schon für deine Zwecke die ClientRectangle Eigenschaft in deiner Klasse per new zu überschreiben.
Von Verdecken halte ich ehrlich gesagt garnichts, wenn man nicht aufpasst spricht man ganz schnell die falsche Methode an.
Natuerlich hast du es einfacher.
Alleine dadurch, dass du bereits eine Programmiersprache kannst. Die Strukturen und Sprachen sind kein Problem - wenn du einmal die wichtigsten Dinge verstanden hast ist es einfach neue Sprachen zu lernen.
Man muss in C++ weitaus vorsichtiger sein als in C#, aber ein wenig Gedult und das funktioniert nach kurzer Zeit. Länger wird es dauern bis du wirklich guten C++ Code schreibst -- aber da hilft ja bekanntlich viel Übung.
hm stimmt fällt mir auch grade auf. naja ist eigentlich nicht weiter wichtig hab beim schreiben dieses programms nicht wirklich geschaut was ich schreibe, ich wollte nur mein problem mit if darstellen.