Laden...
Avatar #avatar-2571.jpg
Simon Heinzmann myCSharp.de - Member
Masterthesisschreiber Bayern Dabei seit 14.03.2008 43 Beiträge
Benutzerbeschreibung

Forenbeiträge von Simon Heinzmann Ingesamt 43 Beiträge

18.09.2008 - 14:21 Uhr

Ich muss den hexadezimalen Wert über den seriellen Port senden

 serialPortLauflicht.Write(new byte[] { 0x55, intToHexByte(led), intToHexByte(0), 0x0D }, 0, 4);
18.09.2008 - 12:53 Uhr

return (byte)p;

Das "return (byte)p;" wandelt mir einen Dezimalen Integer in ein hexadezimales Byte um??

Gruss
Simon

18.09.2008 - 11:08 Uhr

Hi,
ich hab einen Timer der zählt von 118 auf 0 runter.

Hier die Funktion die die int in hex byte Werte umwandelt

        private byte intToHexByte(int p)
        {
            // Umwandlung von int zu einem Hex Wert der als Byte an das Lauflicht gesendet wird
            string valueHex = String.Format("{0:x}", UInt64.Parse(Convert.ToString(p)));
            return Convert.ToByte(valueHex);
        }

bei 111 = 6f kommt diese Fehlermeldung:

Fehlermeldung:
System.FormatException wurde nicht behandelt.
Message="Die Eingabezeichenfolge hat das falsche Format."

Kann mir jemand weiterhelfen, ich steh total aufm Schlauch.

Gruss
Simon

29.08.2008 - 12:10 Uhr

Hi,

@herbivore: bringt leider nichts
@all: Noch andere Ideen???

Gruss
Simon

29.08.2008 - 11:59 Uhr

Hi,

ich kann direkt auf der Form zeichnen (das Weisse Dreieck siehe Anhang) und die Transparente Picturebox darüber legen. Das funktioniert wunderbar. Meine Idee war das bei jeder Änderung des Panels (OnPaint Event) ich einfach das transparente Bild darüber male.....

Gruss
Simon

29.08.2008 - 11:27 Uhr

Guten Morgen,

Folgendes Szenario siehe Anhang:

  • Form mit Sternen BackgroundImage
  • Panel in der Mitte das das Signal der Webcam ausgibt
  • Eine grosse PictureBox unten mit PNG Bild
  • Drei kleine PictureBoxen oben jeweils rechts und links neben dem Panel und genau darüber

Ziel:
Über das Panel soll ein Rahmen kommen

Variante Balken Unten:
Unten hab ich einfach eine Picturebox über das Panel gelegt, aber nach kurzer Recherche hab ich erfahren das es keine echte Transparenz gibt und deshalb der Background von der Form angezeigt wird und nicht das Panel

Variante mehrere Balken Oben:
Den Balken direkt auf das Panel zulegen bringt nichts weil das Panel von der Webcam immer übermalt wird. Deshalb hab ich in das OnPaintEvent der Form folgendes eingebaut:

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;
using System.IO;
using System.Reflection;
// using AxSHDocVw;

namespace InnovationsCockpitPrototyp
{
    public partial class FormDispalyFrontPassenger : Form
    {
       protected override void OnPaint(PaintEventArgs e)
        {
            Assembly myAssembly = Assembly.GetExecutingAssembly();
            Stream myStream = myAssembly.GetManifestResourceStream("InnovationsCockpitPrototyp.Resources.Passenger_mitte.png");
            Bitmap bmp = new Bitmap(myStream);
            Graphics g = e.Graphics;
            g.DrawImage(bmp, 380, 0);
            base.OnPaint(e);
        }
    }
}

Any Ideas???

Gruss
Simon

31.07.2008 - 14:56 Uhr

Hi,
ich fand einen sehr guten Einstieg mit dem "Kochbuch Visual C# 2005" mit vielen kleinen Programmen zu vielen Themengebieten schritt für Schritt erklärt.
Gruss
Simon

15.07.2008 - 17:32 Uhr

Hi,

ist es möglich ein zum Teil Transparentes Video z.B. Quicktime in ein Form zu integrieren??

Gruss

03.07.2008 - 16:14 Uhr

axQTControlStartButton.Movie.Play(1);
Startet das Video

Und es gibt keine Klick Event, werde eine Picturebox drüberlegen müssen

03.07.2008 - 16:06 Uhr

Guten Abend,

ich möchte in einer Form eine Quicktime Video abspielen, das Video soll starten wenn ich auf das Quicktime Controll klicke

        private void Form1_Load(object sender, EventArgs e)
        {
            axQTControlStartButton.URL = "C:\\Media\\Filmbutton.mov";
        }

        private void axQTControlStartButton_QTEvent(object sender, AxQTOControlLib._IQTControlEvents_QTEventEvent e)
        {
            axQTControlStartButton.Movie.Play(?????????);
        }

???????? = Object MovieRate

Was bedeutet das???

17.06.2008 - 14:20 Uhr

der Debugger wirft keinen Fehler, der Mauszeiger bewegt bzw. springt genau dahin wo mein finger ist.

17.06.2008 - 14:12 Uhr

Mahlzeit,

hat keiner eine Idee, bin vollkommen ratlos wo das Problem liegen könnte.

Gruss
Simon

16.06.2008 - 15:19 Uhr

Hi,

ich komm irgendwie nicht weiter, der Cursor kommt einfach nicht über die Touchscreenfläche hinaus

public partial class FormBrowserSteuerung : Form
    {
        public FormBrowserSteuerung()
        {
            InitializeComponent();
        }
        // Variablendeklaration        
        int ausgangsKordsX;
        int ausgangsKordsY;
        int absolutKordsX;
        int absolutKordsY;        

        private void FormBrowserSteuerung_MouseMove(object sender, MouseEventArgs e)
        {
            // Touchscreenfläche
            if (e.X > 0 && e.X < 480 && e.Y < 500)
            {
                // Berechnung der Koordinaten
                int verschiebungX = MousePosition.X - ausgangsKordsX;
                int verschiebungY = MousePosition.Y - ausgangsKordsY;

                absolutKordsX += verschiebungX;
                absolutKordsY += verschiebungY;

                ausgangsKordsX = MousePosition.X;
                ausgangsKordsY = MousePosition.Y;

                Cursor.Position = new Point(absolutKordsX, absolutKordsY);

            }
         }
    }

Kann es sein das jedes mal wenn MouseMove ausgeführt wurde die Werte ausgangsKordsX usw. nicht gespeichert werden.

Bin für jeden Tip dankbar.

Gruss
Simon

13.06.2008 - 13:38 Uhr

Hi,
das mit dem Klicken funktioniert wunderbar. Die ganze Steuerung ist durch die Multiplikation und die unschärfe des Touchscreens nicht brauchbar.

Meine Neue Idee ist es wie bei einem Touchpad auf einem Laptop zu lösen, d.h. die Verschiebung des Cursor erfolgt 1:1 zu dem der Bewegung auf dem Touchscreen.


        // Mouseposition         
        int x;
        int y;
        // Ausgangsmauskoordinaten
        int AusgangsKordsX;
        int AusgangsKordsY;

        private void FormBrowserSteuerung_MouseMove(object sender, MouseEventArgs e)
        {
            // Touchscreenfläche
            if (e.X > 0 && e.X < 480 && e.Y < 500)
            {
  
                // Berechnung der Koordinaten
                x = x + (e.X - AusgangsKordsX);
                y = y + (e.Y - AusgangsKordsY);

                // Ausgangskoordinaten setzen
                AusgangsKordsX = e.X;
                AusgangsKordsY = e.Y;

                // Cursor Position setzen
                Cursor.Position = new Point(x, y);
            }

Ich komme damit nicht über den Touchscreen Bildschirm hinaus... Ich finde einfach nicht den fehler in der Logik.

Gruss und Danke

11.06.2008 - 12:32 Uhr

Hi,

danke für die Tips an The69 und JAck30lena, ich verschieb einfach den Mauszeiger nach links weil dort in der Windowskonfiguration der Monitor mit Form2 angeordnet ist.

        private void FormBrowserSteuerung_MouseMove(object sender, MouseEventArgs e)
        {

            if (Control.MousePosition.X > 0 && Control.MousePosition.X < 480)
            {
                // this.Cursor = new Cursor(Cursor.Handle);
                Cursor.Position = new Point((Cursor.Position.X * 3) - 1280, Cursor.Position.Y);
            }
        }

Das gleiche hab ich mit MouseDown und Mouse Up gemacht.

Die Mouse gewegt sich wunderbar auf Form2 aber ich kann keine Links anklicken, habt ihr da irgendwelche Ideen?

Gruss

11.06.2008 - 11:00 Uhr

Nachtrag:

Die Control.MousePosition.X ich nicht ändern.

Der Rückgabewert "System.Windows.Forms.Control.MousePosition" kann nicht geändert werden, da er keine Variable ist.

11.06.2008 - 10:48 Uhr

Hallo,

folgender Aufbau bereitet mir noch Probleme. Ich programmiere eine Multimonitoranwendung mit Browserfunktion, einem Touchscreen und einem weiteren Bildschirm.

Daten:
Touchscreen 480640 Pixel, Form1 mit UserControl Bildschirmtastatur, URL Textbox und Go-Button
Bildschirm 1280
390 Pixel, Form2 mit Webbrowserfenster

Die URL Eingabe erfolgt über eine Bildschirmtastatur, nach dem drücken des Go-Button wird wird die Bildschirmtastatur, URL Textbox und Go-Button ausgeblendet.

Problem:
Nach der Eingabe soll das Touchscreen als Touchpad wie bei einem Laptop funktionieren, aber wie bringe ich dem Mousezeiger bei das er sich nur nur in Form2 bewegen darf und von Form1 aus gesteuert werden kann.

Gruss

15.05.2008 - 11:35 Uhr

Hi,

ich hab eine intresante Beispielanwendung gefunden:
http://www.codeproject.com/KB/list/SmoothListBox.aspx

ich kann das Projekt leider mit meinem Visual C# 2008 Express Edition nicht öffnen, und bekomme die Fehlermeldung "Die Projektdatei "blabla" kann nicht geöffnet werden. Der Projekttyp wird von dieser Installation nicht unterstützt." <- siehe Anhang

in der Projektdatei "Smooth ListBos.sln"


Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Smooth ListBox", "Smooth ListBox\Smooth ListBox.csproj", "{4C918007-827E-43B4-916A-9EF47BC7BEA0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Smooth ListBox (Test)", "Smooth ListBox (Test)\Smooth ListBox (Test).csproj", "{E8B5A995-4F26-4F32-A86C-ABE28DF297D3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Extended ListItems", "Extended ListItems\Extended ListItems.csproj", "{EE6A7C33-3E63-4A01-8969-F5015F633B97}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{4C918007-827E-43B4-916A-9EF47BC7BEA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{4C918007-827E-43B4-916A-9EF47BC7BEA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{4C918007-827E-43B4-916A-9EF47BC7BEA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{4C918007-827E-43B4-916A-9EF47BC7BEA0}.Release|Any CPU.Build.0 = Release|Any CPU
		{E8B5A995-4F26-4F32-A86C-ABE28DF297D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E8B5A995-4F26-4F32-A86C-ABE28DF297D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E8B5A995-4F26-4F32-A86C-ABE28DF297D3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
		{E8B5A995-4F26-4F32-A86C-ABE28DF297D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E8B5A995-4F26-4F32-A86C-ABE28DF297D3}.Release|Any CPU.Build.0 = Release|Any CPU
		{E8B5A995-4F26-4F32-A86C-ABE28DF297D3}.Release|Any CPU.Deploy.0 = Release|Any CPU
		{EE6A7C33-3E63-4A01-8969-F5015F633B97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{EE6A7C33-3E63-4A01-8969-F5015F633B97}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{EE6A7C33-3E63-4A01-8969-F5015F633B97}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{EE6A7C33-3E63-4A01-8969-F5015F633B97}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

steht das die Projektdatei mit Visual Studio erstellt worden ist.
**
Wie kann ich das Problem lösen??**

Gruss
Simon

09.05.2008 - 13:41 Uhr

Hi,

ich hab noch einen super Codeschnipsel auf codeproject gefunden den ich euch nicht vorenthalten will...

Implementing a smoothly animated ListBox
http://www.codeproject.com/KB/list/SmoothListBox.aspx

Introduction

This article shows how you can implement a smooth list box that allows intuitive, friction affected, scrolling of the list items.
By friction based I mean that the user can apply a dragging force i one direction and the list will keep scrolling after the mouse or stylus is released and then slow down by itself.
I've looked at how lists behave on the iPhone and tried to mimic that to a certain extent, but I'm nowhere near anything as cool as what the iPhone presents.

The properties of the iPhone list box that I think are the neatest are the fact that you do not scroll it using a scrollbar but rather just grab the list items and drag them, much neater.

Also, on the iPhone, one is allowed to scroll beyond the bounds of the list box and the items just snaps back into place. Very cool.

Gruss

30.04.2008 - 11:39 Uhr

Hi,

erstmal DANKE an Warappa ich hatte genau das Problem, bin leider Anfänger und hab auf dem ersten Blick ned wirklich verstanden was du da machst, deshalb stelle ich hier für das Problem meinen Code rein und ne kleine Anleitung.

Hoffe das hilft irgendjemanden mal so wie mir.

Codeverbesserungsvorschläge sind natürlich herzlich Willkommen

Edit: Anmerkung es gibt fünf Schriftgrade von 0 - 4

Verweise -> Verweis hinzufügen
Com -> Microsoft Internet Controls "ShDocVW.dll"

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;
using AxSHDocVw;

namespace WindowsFormsApplication1
{
     public partial class FormBrowser : Form
    {

        // Intialsierung des Zoomlevels auf Medium = 2
        int schriftgradlevel = 2;
                        
        public FormBrowser()
        {
            InitializeComponent();
        }
        
        private void buttonFontUp_Click(object sender, EventArgs e)
        {
            schriftgradlevel++;
            labelSchriftgrad.Text = "Schriftgrad: " + schriftgradlevel;
            if (schriftgradlevel < 5)
            {
                buttonFontDown.Enabled = true;
                object oOut = new Object();
                object oIn = (int)schriftgradlevel; //0...4, NUR Int32!
                ((SHDocVw.IWebBrowser2)(webBrowser.ActiveXInstance)).ExecWB (SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref oIn, ref oOut);
            }
            if (schriftgradlevel == 4)
                buttonFontUp.Enabled = false;
        }

        private void buttonFontDown_Click(object sender, EventArgs e)
        {

            schriftgradlevel--;
            labelSchriftgrad.Text = "Schriftgrad: " + schriftgradlevel;
            if (schriftgradlevel >= 0)
            {
                buttonFontUp.Enabled = true;
                object oOut = new Object();
                object oIn = (int)schriftgradlevel; //1...4, NUR Int32!
                ((SHDocVw.IWebBrowser2)(webBrowser.ActiveXInstance)).ExecWB (SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref oIn, ref oOut);
             }
            if (schriftgradlevel == 0)
                buttonFontDown.Enabled = false;
        }

        private void FormBrowser_Leave(object sender, FormClosingEventArgs e)
        {
            object oOut = new Object();
            object oIn = 2; //0...4, NUR Int32!
((SHDocVw.IWebBrowser2)(webBrowser.ActiveXInstance)).ExecWB (SHDocVw.OLECMDID.OLECMDID_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref oIn, ref oOut);
        }
    }
}
29.04.2008 - 09:45 Uhr

SQL-DATABASE ERROR

Database error in WoltLab Burning Board (): Link-ID == false, connect failed
mysql error: Lost connection to MySQL server during query
mysql error number: 2013
mysql version: unknown
php version: 4.4.4
Date: 29.04.2008 @ 09:34
Script: /wbb2/
Referer: http://www.mycsharp.de/

28.04.2008 - 09:54 Uhr

Hi,
das geht bei mir über die Nvidiasystemsteuerung oder wie das ding heisst, dort kannst du mehrere Profile anlegen die du dann mit zwei oder drei Klicks öffnen kannst.
Gruss

21.04.2008 - 09:45 Uhr

Hi,

ich schreibe im Moment eine Multimonitoranwendung für ein PKW-Cockpit (Browser, Videoplayer usw.), die einzelnen Funktionen wie Bildschirmtastatur, Mediaplayersteuerung usw. ist in C# mit Visual C# 2008 Express programmiert. Nun möchte ich über WLAN und Handy auf die Funktionen wie Mediaplayersteuerung zugreifen.

Wie würdet ihr das umsetzen, in welcher Sprache und mit welcher Entwicklungsumgebung.

Ich hab schon ein gegoogelt und favorisiere im Moment ASP.NET mit Microsoft Visual Web Developer 2008 Express. Der Zugriff soll über den Browser des Handys erfolgen.

Gruss

21.04.2008 - 09:02 Uhr

Hi,
schon sendKeys probiert, wird hier -> Link wird hier am Beispiel einer Bildschirmtastatur verwendet und funktioniert bei mir tadellos.
Gruss

18.04.2008 - 10:28 Uhr

Hi,

ich bastel auch gerade an etwas ähnlichem rum, aber ich Benutze MCI, das Standartmässig auf jedem Windows seit 3.11 installiert ist.
Hier der Link mit Infos und einem Beispielprogramm:

Audio- und Videowiedergabe mit MCI

@Scarecraft: Kannst du mir bitte deinen Sourcecode schicken oder uppen, mich würde intresieren was und wie du so für Features eingebaut hast.

Gruss

18.04.2008 - 10:17 Uhr

Hi,
ich finde die Idee von MC Steel nicht schlecht, weil egal wie man das Lesezeichen einfügt es richtig dargestellt wird.
Gruss

16.04.2008 - 10:04 Uhr

Hi,
da kannst du nicht viel machen ausser gelegentlich nachgucken ob die URL vielleicht ausläuft, eine .info oder .biz URL nehmen, die sind nicht viel teuerer als eine .de
Gruss

11.04.2008 - 09:18 Uhr

Hi,
erstmal Grüsse an dich, ich schreib im Moment meine Masterthesis 🙂, als Tip zu Erstellung der Arbeit kann ich dir empfehlen, evtl. eine ähnlich gelagerte DA zu suchen, entweder in der BIB oder im I-Net damit du ein Gefühl dafür bekommst wie man sowas aufbaut. Ich hatte für meine DA damals noch so ein kleines Büchlein da stand alles mögliche drin wie man richtig zitiert, das war ganz brauchbar.
Gruss

07.04.2008 - 09:41 Uhr

Hi, jetzt macht der Tip Sinn, ich bin erst am Beginn meiner C#-Programmierkarriere...
Gruss

04.04.2008 - 15:38 Uhr

Hi,
schaedld du bist der Beste.

Die Lösung ist ganz einfach 8o 8o


public FormBrowserSteuerung()

        FormBrowser browser = new FormBrowser();
        
        private void userControlTS_UserKeyPressed (object sender, KeyboardEventArgs e)
        {
            browser.textBoxURL.Focus();
            SendKeys.Send(e.KeyboardKeyPressed);
            
        }

        private void FormBrowserSteuerung_Load(object sender, EventArgs e)
        {
            browser.Show();
            browser.textBoxURL.Focus();
        }

Schönes WE ich geh jetzt heim.

04.04.2008 - 14:59 Uhr

Hi,
@ErfinderDesRades: Den Artikel hab ich gelesen, aber bei meinem Projekt handelt es sich um eine Multimonitoranwendung mit drei Bildschirmen die bedient werden sollen über einen Touchscreen.
Auf dem Touchscreen wird bei Bedarf eine Tastatur eingeblendet, mit dem auf einem der anderen Bildschirme ein Browserfenster geöffnet ist.
Gruss

04.04.2008 - 13:59 Uhr

Hi,
ja beim laden von Form1 wird Form2 geöffnet.


private void FormBrowserSteuerung_Load(object sender, EventArgs e)
        {
            FormBrowser browser = new FormBrowser();
            browser.Show();
        }

Ich kann in "userControlTS_UserKeyPressed" kein Form.Show() reinbauen weil dann bei jedem Tastendruck ein neues Fenster geöffnet wird.

Das Grundproblem ist das der Focus auf der Textbox in Form2 liegen muss wenn ich die Zeichen gesendet werden

SendKeys.Send(e.KeyboardKeyPressed);

Gruss

04.04.2008 - 11:20 Uhr

Hmmm ich weiss jetzt nicht ob ich mich falsch ausgedrückt habe, ich will nicht zugreifen, ich will nur die Textbox in Form2 fokusieren.

04.04.2008 - 11:12 Uhr

Hi,
danke für den FAQ Hinweis, mir geht es aber nicht um eine Variablen übergabe sondern um die FOKUSIERUNG.
Gruss

04.04.2008 - 11:03 Uhr

Hi,
ich bin im Moment ein wenig ratlos. Folgendes Szenario:
Ich hab eine Bildschirmtastatur in Form1 und eine Textbox in Form2 die nach jedem Klick fokusiert werden soll.

Das funktioniert wunderbar ist aber das falsche Form


private void userControlTS_UserKeyPressed (object sender, KeyboardEventArgs e)
        {
            
            //Focus auf textBox in Form1 funktioniert wunderbar, aber ich will die Textbox in Form2 fokusieren
            textBox1.Focus();
                     
            //Taste an focusiertes Fenster schicken
            SendKeys.Send(e.KeyboardKeyPressed);
        }

Das Funkioniert nicht!


private void userControlTS_UserKeyPressed (object sender, KeyboardEventArgs e)
        {
            //Kein Focus in Form2
            FormBrowser browser = new FormBrowser();
            browser.textBoxURL.Focus();
                     
            //Taste an focusiertes Fenster schicken
            SendKeys.Send(e.KeyboardKeyPressed);
        }

Kann mir jemand weiterhelfen?
Gruss

02.04.2008 - 15:34 Uhr

Genau das hat gefehlt!!!!!!!!!!!

this.pictureBoxKeyboard.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBoxKeyboard_MouseClick);

02.04.2008 - 13:45 Uhr

Hi,
ich komme einfach nich weiter, weis auch irgendwie nicht wo der Fehler liegen könnte.

Mein Ziel ist es eine Bildschirmtastatur auf einem Touchscreen. Ich hab schon einen Super Codeschnipsel gefunden den ich einfach nachgebaut hab. http://www.codeproject.com/KB/miscctrl/touchscreenkeyboard.aspx

Problem: Die Mauskoordinaten werden nicht an das Benutzersteuerelement übergeben, es passiert einfach gar nix, der Debugger läuft durch.

Form: FormBrowsersteuerung (Richtextfeld und Benutzersteuerelement)

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 FormBrowserSteuerung : Form
    {
        public FormBrowserSteuerung()
        {
            InitializeComponent();
        }

        private void userControlTS_UserKeyPressed (object sender, KeyboardEventArgs e)
        {
            richTextBox1.Focus();
            SendKeys.Send(e.KeyboardKeyPressed);
        }


    }

}

Benutzersteuerelement: UserControlTS

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class UserControlTS : UserControl
    {
        public UserControlTS()
        {
            InitializeComponent();
        }

        //Variable die speichert ob Shift gedrückt wurde oder nicht
        private Boolean shiftindicator = false;
        
        //String (Taste die gedrückt wurde)
        private string pvtKeyboardKeyPressed = "";
        
        [Category("Mouse"), Description("Return value of mouseclicked key")]
        public event KeyboardDelegate UserKeyPressed;
        protected virtual void OnUserKeyPressed(KeyboardEventArgs e)
        {
            if (UserKeyPressed != null)
                UserKeyPressed(this, e);
        }

        //Funktion (Wenn auf Picture Box geklickt wird)
        private void pictureBoxKeyboard_MouseClick(object sender, MouseEventArgs e)
        {
            // Koordinaten der Maus
            Single xpos = e.X;
            Single ypos = e.Y;

            // Handleaufruf zur Abfrage welche Taste geklickt wurde
            pvtKeyboardKeyPressed = HandleTheMouseClick(xpos, ypos);

            KeyboardEventArgs dea = new KeyboardEventArgs(pvtKeyboardKeyPressed);
            OnUserKeyPressed(dea);
        }

        // Handle zur unterschiedlichen Darstellung der Shift-Taste
        private void HandleShiftClick()
        {
            if (shiftindicator)
            {
                shiftindicator = false;
                pictureBoxShiftDown.Visible = false;
            }
            else
            {
                shiftindicator = true;
                pictureBoxShiftDown.Visible = true;
            }

        }        
        // Handle der den MouseClick abfrägt
        private string HandleTheMouseClick(Single x, Single y)
        {
            string Keypressed = null;
            // Abfrage ob Mouse im gültigem Bereich x=[1;480] y =[1;202]
            // Übergabe von Keypressed an HandlesShiftaableKey -> Prüfung Gross/Kleinschreibung
            if (x >= 1 && x < 480 && y >= 1 && y < 202)
            {
                //Erste Zeile
                if (y <= 53)
                {
                    if (x >= 1 && x < 48) Keypressed = HandleShiftableKey("q");
                    else Keypressed = null;
                }
                //Zweite Zeile
                //Dritte Zeile
                else if (y >= 106 && y < 158)
                {
                    if (x >= 1 && x < 129) HandleShiftClick();
                    else Keypressed = null;
                }
                else
                {
                    Keypressed = null;
                }
            }

            //Prüfung ob gültige Taste gedrückt wurde:
            //wenn ja Return "Keypressed" und Prüfung ob Shifttaste zurückgesetzt werden muss
            //wenn nein Return "null"
            if (Keypressed != null)
            {
                if (shiftindicator) HandleShiftClick();
                return Keypressed;
            }
            else
            {
                return null;
            }
        }



        //Buchstaben ohne Shift-Taste werden einfacht zurückgegeben
        //Buchstaben mit Shift-Taste wird ein + hinzugefügt und zurückgegeben
        private string HandleShiftableKey(string theKey)
        {
            if (shiftindicator)
            {
                return "+" + theKey;
            }
            else
            {
                return theKey;
            }
        }

        // Klick auf Shift wenn die Shifttaste gedrückt wurde
        private void pictureBoxShiftDown_Click(object sender, MouseEventArgs e)
        {
            HandleShiftClick();
        }
            
    }
    public delegate void KeyboardDelegate(object sender, KeyboardEventArgs e);

    public class KeyboardEventArgs : EventArgs
    {
        private readonly string pvtKeyboardKeyPressed;

        public KeyboardEventArgs(string KeyboardKeyPressed)
        {
            this.pvtKeyboardKeyPressed = KeyboardKeyPressed;
        }

        public string KeyboardKeyPressed
        {
            get
            {
                return pvtKeyboardKeyPressed;
            }
        }
    }
}

FormBrowserSteuerung.Desginer.cs

namespace WindowsFormsApplication1
{
    partial class FormBrowserSteuerung
    {
        /// <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.richTextBox1 = new System.Windows.Forms.RichTextBox();
            this.userControlTS = new WindowsFormsApplication1.UserControlTS();
            this.SuspendLayout();
            // 
            // richTextBox1
            // 
            this.richTextBox1.Location = new System.Drawing.Point(31, 12);
            this.richTextBox1.Name = "richTextBox1";
            this.richTextBox1.Size = new System.Drawing.Size(514, 103);
            this.richTextBox1.TabIndex = 0;
            this.richTextBox1.Text = "";
            // 
            // userControlTS
            // 
            this.userControlTS.Location = new System.Drawing.Point(40, 121);
            this.userControlTS.Name = "userControlTS";
            this.userControlTS.Size = new System.Drawing.Size(480, 202);
            this.userControlTS.TabIndex = 1;
            this.userControlTS.UserKeyPressed += new WindowsFormsApplication1.KeyboardDelegate(this.userControlTS_UserKeyPressed);
            // 
            // FormBrowserSteuerung
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(604, 378);
            this.Controls.Add(this.userControlTS);
            this.Controls.Add(this.richTextBox1);
            this.Name = "FormBrowserSteuerung";
            this.Text = "FormBrowserSteuerung";
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.RichTextBox richTextBox1;
        private UserControlTS userControlTS;
        
   }
}

Gruss

31.03.2008 - 12:08 Uhr

Danach sollte es auch in der Toolbox erscheinen (evtl. nach dem kompilieren erst).

Danke den Hinweis hab ich gesucht.... ich wär fast verzweifelt weil das Benutzersteuerelement nicht in der Toolbox auftaucht, das Problem hat jetzt wieder ein paar Tage Lebenszeit gekostet

👍 👍 👍 👍

26.03.2008 - 08:28 Uhr

Guten Morgen,

folgende Ausgangslage, ich hab ein Form1 mit zwei Buttons mit beiden rufe ich ein zweites Form auf, übergebe einen String der den Pfad zu dem Image enthält das in Form3DMonitor angezeigt werden soll. Leider öffnet er im Moment immer wieder ein neues Fenster.

Form1:


private void buttonNavigation_Click(object sender, EventArgs e)
        {
            string fname = "D:\\Entwicklung\\5-Images\\navi.jpg";
            Form3dMonitor monitor = new Form3dMonitor(fname);
            monitor.Show(this);
        }

private void button2_Click(object sender, EventArgs e)
        {
            string fname = "D:\\Entwicklung\\5-Images\\tacho.jpg";
            Form3dMonitor monitor = new Form3dMonitor(fname);
            monitor.Show(this);
        }

Form3dMonitor:

    public partial class Form3dMonitor : Form
    {
        string filename = "";
        public Form3dMonitor(string fname)
        {
            filename = fname;
            InitializeComponent();
            Bitmap pic = new Bitmap(filename);
            pictureBox1.Image = pic;
        }
     }

Wie kann ich per if überprüfen ob das Form3dMonitor geöffnet ist???

19.03.2008 - 11:42 Uhr

Hi,
warum es da hackt keine Ahnung, ich hab die zwei Forms neu gemacht und es geht...
Danke für die Hilfe

19.03.2008 - 11:15 Uhr

Der Fehler tritt auf sobald ich auch den ButtonEntertainment im FormTS Klicke um das FormEntertainment zu öffnen

19.03.2008 - 11:08 Uhr

Danke für den Hinweis, has geändert und nochmal durch den Debugger gejagt. Problem besteht weiterhin:

Zeile:

Application.Run(new FormTS());

Fehler:

Auf das verworfene Objekt kann nicht zugegriffen werden.
Objektname: FormEntertainment.

19.03.2008 - 10:53 Uhr

Hi,
ich hab ein ähnliches Problem:

Hier der Code, das Ziel ist wenn ich auf ButtonEntertainment klicke daß das FormTS geschlossen wird und das FormEntertainment geöffnet wird.

program.cs

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 FormTS());
        }
    }
}

FormTS.cs:

namespace WindowsFormsApplication1
{
    public partial class FormTS : Form
    {
    FormEntertainment entertainment = new FormEntertainment();
        public FormTS()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void buttonEntertainment_Click(object sender, EventArgs e)
        {
            if (entertainment.IsDisposed)
                entertainment = new FormEntertainment();
            FormEntertainment.Show();
                  
        }
    }
}

FormEntertainment.cs:

namespace WindowsFormsApplication1
{
    public partial class FormEntertainment : Form
    {
        public FormEntertainment()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

Der Debugger schmeisst an Fehler sobald ich auf den ButtonEntertainment drücke.
"Auf das verworfene Objekt kann nicht zugegriffen werden.
Objektname: FormEntertainment."

Gruss