Hallo an alle,
ich möchte ein einziges Programm, das ich in php geschrieben habe, in eine Windows-GUI bringen. Normalerweise arbeite ich ausschliesslich unter "Linux" und ich werde auch nur diese eine Anwendung portieren müssen. Da das eigentliche Programm schon läuft - brauche ich es nur noch zu portieren und die Teile, die bislang fehlen, dazuprogrammieren. Dafür möchte ich aber nicht C# / Visual Express / Winforms komplett lernen - ich muss ja nur ein paar speziell darauf ausgelegte Programmteile (ich vermute stets nur wenige Zeilen Code) erstellen...
Ich habe einen "Programmkörper" mittels VE2010 C# erstellt. In dem Fenster gibt es ein paar Labels, die während der Laufzeit des Programmes mit wechselnden Werten befüllt werden sollen und diese Werte sollen dann auch im Fenster angezeigt werden. Ich bekomme es aber bislang trotz langen Probierens und googlens nicht hin, dass es funktioniert. Entweder, es gibt Compilerfehler, weil ich irgendwas mit Objekten oder Klassen nicht beachtet habe, oder es gibt keine Compilerfehler und es passiert einfach nichts.
Vielleicht gibt es hier jemanden, der mir mit den entscheidenden Zeilen weiterhelfen kann??
Hier der von VE erzeugte Code:
Form1.cs:
Form1.Designer.cs:
Program.cs:
Natürlich ist mir bewusst, dass das ein Kinderspeil ist, wenn man C# kann. Aber, wie bereits geschrieben: Es wird nur wenige Programmteile geben, die eben C# - spezifisch sind, und deswegen möchte ich das alles nicht komplett erarbeiten. Mein eigentlicher Code wird locker innerhalb von Main() stehen und ist daher leicht zu portieren...
Ich hoffe, dass es tatsächlich ganz einfach ist und mir jemand den nötigen Tipp geben kann...
df8oe
ich möchte ein einziges Programm, das ich in php geschrieben habe, in eine Windows-GUI bringen. Normalerweise arbeite ich ausschliesslich unter "Linux" und ich werde auch nur diese eine Anwendung portieren müssen. Da das eigentliche Programm schon läuft - brauche ich es nur noch zu portieren und die Teile, die bislang fehlen, dazuprogrammieren. Dafür möchte ich aber nicht C# / Visual Express / Winforms komplett lernen - ich muss ja nur ein paar speziell darauf ausgelegte Programmteile (ich vermute stets nur wenige Zeilen Code) erstellen...
Ich habe einen "Programmkörper" mittels VE2010 C# erstellt. In dem Fenster gibt es ein paar Labels, die während der Laufzeit des Programmes mit wechselnden Werten befüllt werden sollen und diese Werte sollen dann auch im Fenster angezeigt werden. Ich bekomme es aber bislang trotz langen Probierens und googlens nicht hin, dass es funktioniert. Entweder, es gibt Compilerfehler, weil ich irgendwas mit Objekten oder Klassen nicht beachtet habe, oder es gibt keine Compilerfehler und es passiert einfach nichts.
Vielleicht gibt es hier jemanden, der mir mit den entscheidenden Zeilen weiterhelfen kann??
Hier der von VE erzeugte Code:
Form1.cs:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "Startwert";
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}
Form1.Designer.cs:
Code:
namespace WindowsFormsApplication1
{
public partial class Form1
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.data_lokal = new System.Windows.Forms.RadioButton();
this.data_netz = new System.Windows.Forms.RadioButton();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// data_lokal
//
this.data_lokal.AutoSize = true;
this.data_lokal.Location = new System.Drawing.Point(12, 26);
this.data_lokal.Name = "data_lokal";
this.data_lokal.Size = new System.Drawing.Size(47, 17);
this.data_lokal.TabIndex = 0;
this.data_lokal.TabStop = true;
this.data_lokal.Text = "lokal";
this.data_lokal.UseVisualStyleBackColor = true;
this.data_lokal.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
//
// data_netz
//
this.data_netz.AutoSize = true;
this.data_netz.Location = new System.Drawing.Point(12, 50);
this.data_netz.Name = "data_netz";
this.data_netz.Size = new System.Drawing.Size(62, 17);
this.data_netz.TabIndex = 1;
this.data_netz.TabStop = true;
this.data_netz.Text = "@home";
this.data_netz.UseVisualStyleBackColor = true;
this.data_netz.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(297, 118);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(97, 13);
this.label1.TabIndex = 2;
this.label1.Text = " ";
this.label1.Click += new System.EventHandler(this.label1_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Window;
this.ClientSize = new System.Drawing.Size(674, 392);
this.Controls.Add(this.label1);
this.Controls.Add(this.data_netz);
this.Controls.Add(this.data_lokal);
this.Name = "Form1";
this.Text = "Predictor";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.RadioButton data_lokal;
private System.Windows.Forms.RadioButton data_netz;
private System.Windows.Forms.Label label1;
}
}
Program.cs:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Runtime.ExceptionServices;
namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
// Hier steht mein Programmcode - er erzeugt Daten - nächste Zeile ein Beispiel:
string mywert1 = "neuer Wert";
// Der Inhalt von mywert1 soll *JETZT UND AN DIESER STELLE* durch ein paar (??) Zeilen Code an die Stelle des Labels "label1" ausgegeben werden. Die nachfolgenden drei Zeilen waren ein Versuch, der aber nicht funktioniert hat:
Form1.ActiveForm.Controls["label1"].Text = mywert1;
Form1.ActiveForm.Controls["label1"].Update();
Form1.ActiveForm.Controls["label1"].Refresh();
}
}
}
Natürlich ist mir bewusst, dass das ein Kinderspeil ist, wenn man C# kann. Aber, wie bereits geschrieben: Es wird nur wenige Programmteile geben, die eben C# - spezifisch sind, und deswegen möchte ich das alles nicht komplett erarbeiten. Mein eigentlicher Code wird locker innerhalb von Main() stehen und ist daher leicht zu portieren...
Ich hoffe, dass es tatsächlich ganz einfach ist und mir jemand den nötigen Tipp geben kann...
df8oe