Laden...

Forenbeiträge von axawd Ingesamt 20 Beiträge

12.11.2009 - 16:22 Uhr

Hallo,

mir ist leider keine funktion bekannt. Möglich wäre eine eliminierung der dupplikate mittels regex.

Ich habe das problem so gelöst:


                string OutStr = "";
                StringBuilder MyOutStr = new StringBuilder("");

                for (int i = 0; i < intNumberArr.Length-1 ; i++)
                {
                    if (intNumberArr[i] != intNumberArr[i + 1])
                    {
                        MyOutStr.Append(intNumberArr[i] + ",");
                    }
                    if (i + 1 == (intNumberArr.Length - 1))
                    {
                        MyOutStr.Append(intNumberArr[i + 1]);
                    }
                }

allerdings ordne ich die daten vorher aufsteigend mit zB. :


ArrayList alle = new ArrayList();
...
alle.Sort();

09.11.2009 - 12:53 Uhr

Danke Mr Evil. Das hilft.

09.11.2009 - 11:59 Uhr

Hi michlG,

danke für die schnelle antwort! Ich habe schon gegoogelt, konnte leider nicht das richtige finden. Die idee mit blend finde ich gut. bin schon am runterladen.

Das problem ist, dass ich momentan nicht weiß wie ich das hinbekommen soll. Ich kann weder events abfangen noch die bilder überschreiben.

Aus google habe ich folgendes:


            <Button.Triggers>
                <Trigger Property="MouseEnter" Value="True">
                    <Trigger.Setters>
                        <Setter Property="Content" Value="Resources/cross.png"/>
                    </Trigger.Setters>
                </Trigger>
            </Button.Triggers>

Das funktioniert leider nicht und ich weiß nicht wieso.

09.11.2009 - 11:34 Uhr

Hallo cominity,

mache gerade die ersten schritte in WPF und komme leider nicht mehr weiter.

Habe eine form mit 2 buttons. Beim darüberfahren mit der maus sollen sich die bilder von _sepia auf normal ändern.
Die start-hintergrundbilder dafür habe ich so festgelegt:


            <Button.Content>
                <Image Source="Resources/cross_sepia.png"/>
            </Button.Content>

Desweiteren habe ich auch die events deklariert:


        <Button Height="20" HorizontalAlignment="Right" Name="button1" VerticalAlignment="Top" Width="20" Click="button1_Click" Cursor="Arrow" MouseEnter="button1_MouseEnter" MouseLeave="button1_MouseLeave" ClickMode="Release">

Die erste frage wäre: Wie bekomme ich den IsMouseOver-Event?
Diesen event möchte ich dann abfangen und die hintergrundbilder ändern.

Danke euch für eure Hilfe.

20.10.2009 - 15:23 Uhr

also, wenn ich herausfinden möchte ob der Calculator schon läuft mache ich das so:


            Process calc = new Process();
            calc.StartInfo.FileName = "calc.exe";

            System.Diagnostics.Process[] proc = Process.GetProcessesByName("calc");

            if (proc.Length != 0)
            {
                return;
            }

manchmal gehe ich auch so vor:


            System.Diagnostics.Process[] processes = Process.GetProcesses();

            for (int i = 0; i < processes.Length; i++)
            {
                if (processes[i].MainWindowTitle.Contains("Was ich suche"))
                {
                    mach etwas
                }
            }

hoffe das hilft

gruß, axawd

30.06.2009 - 11:46 Uhr

evtl. könnte man auch den string nach einer bestimmten anzahl von zeichen splitten & den rest in der nächsten zeile schreiben...

22.06.2009 - 16:14 Uhr

hi,

habe nicht ganz genau verstanden was du meinst. Willst du die name der register rausfinden? Dafür habe ich mal was in VBA gemacht. Mit einigen anpassungen könnte das bei dir funktionieren...


    Dim PageCount As Integer
    Dim Page_1 As Integer

    PageCount = Worksheets.Count
    ReDim TabName(PageCount - 1)
    
    j = 1
    h = 0
    
    For i = 0 To PageCount - 1
        
        On Error Resume Next
        Worksheets.Item(1 + i).Name = "Page " & Page_1 + h
                        
        h = h + 1
        j = j + 1
        
    Next i

22.06.2009 - 11:27 Uhr

Hi,

wie wärs damit:


    Dim no As String
    Dim val As Integer
    Dim i As Integer

    val=0
    i = 0
    Do While Tabelle1.Cells(6 + i, 2) <> ""
        no = Tabelle1.Cells(6 + i, 2)
        If IsNumeric(no) = True Then
          val=val+1
        End If
        i = i + 1
    Loop

15.06.2009 - 15:15 Uhr

hi,

das einzige was mir dabei einfällt ist:


        Application.DisplayStatusBar = True
        Application.StatusBar = "Schreibe bla bla..."

06.05.2009 - 13:47 Uhr

---> @ ErfinderDesRades <---

Ja, jetzt klebt die Sch_ richtig am Schuh! Danke schön, du hast mir sehr geholfen.

06.05.2009 - 10:34 Uhr

--> @ ErfinderDesRades <--

Danke für die coole Lösung! Es funktioniert ganz gut und sauschnell ist es auch!

Die Sache hat noch einen kleinen Hacken. Bei schnellen Mausbewegungen, verliert man die Form.

Änderungen in "rct.Inflate(-2, -2);" haben auch keine Verbesserung gebracht.

Das Problem liegt an "if (this.RectangleToScreen(this.ClientRectangle).Contains(pt)) return;". Kommentiert man es aus, verliert man die Form nicht mehr. Dafür bleiben aber die Buttons innerhalb der Form unerreichbar.

05.05.2009 - 16:36 Uhr

---> @ ErfinderDesRades <---

lol! Die Form soll später auch Wheel heißen und immer ein paar nützliche Funktionen in sich tragen. So sind diese immer bereit & in der Nähe des Kursors. Die gewünschte Vorgehensweise wäre dann: Funktion picken / form ausblenden / Funktion ausführen / Form einblenden.

05.05.2009 - 16:30 Uhr

---> @ JAck30lena <---

Danke! Es hat funktioniert.

Habe allerdings noch ein Problemchen mit der Geschwindigkeit. Ich sehe momentan keine weitere Möglichkeit die Bewegung zu beschleunigen. Es ist flüssiger wenn ich die Location jedes mal in der Schleife zuweise und nicht am Ende. Das ganze sollte 2-4x schneller werden.


private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    Cursor.Clip = new Rectangle(this.Location, this.Size);

    int xOffset;
    int yOffset;

    int speed = 5;

    if (e.X < 1)
    {
        xOffset = -e.X - speed;
        yOffset = -e.Y;

        mouseOffset = new Point(xOffset, yOffset);
        Point mousePos = Control.MousePosition;
        mousePos.Offset(mouseOffset.X, mouseOffset.Y);
        Location = mousePos;

        Refresh();
    }
    else if (e.X > 108)
    {
        xOffset = -e.X + speed;
        yOffset = -e.Y;

        mouseOffset = new Point(xOffset, yOffset);
        Point mousePos = Control.MousePosition;
        mousePos.Offset(mouseOffset.X, mouseOffset.Y);
        Location = mousePos;

       Refresh();
    }
    else if (e.Y < 1)
    {
        xOffset = -e.X;
        yOffset = -e.Y - speed;

        mouseOffset = new Point(xOffset, yOffset);
        Point mousePos = Control.MousePosition;
        mousePos.Offset(mouseOffset.X, mouseOffset.Y);
        Location = mousePos;

        Refresh();
    }
    else if (e.Y > 88)
    {
        xOffset = -e.X;
        yOffset = -e.Y + speed;

        mouseOffset = new Point(xOffset, yOffset);
        Point mousePos = Control.MousePosition;
        mousePos.Offset(mouseOffset.X, mouseOffset.Y);
        Location = mousePos;

        Refresh();
    }

    //mouseOffset = new Point(xOffset, yOffset);
    //Point mousePos = Control.MousePosition;
    //mousePos.Offset(mouseOffset.X, mouseOffset.Y);
    //Location = mousePos;

    //Refresh();
}

05.05.2009 - 14:54 Uhr

Danke, es klingt gut. Werde es gleich ausprobieren.

05.05.2009 - 14:32 Uhr

Ich habs mit MouseLeave probiert, es gab aber keine nennenswerten Verbesserungen.

Die MouseMove Lösung (wie oben gepostet) funktioniert schon. Das Problem ist, dass man dabei die Maus nicht schnell bewegen darf. Tue ich das, springt der Zeiger raus und ich verliere die Form. Glaube die Frage lautet: Wie kann ich die Maus bei jeder Geschwindigkeit in der Form behalten?

05.05.2009 - 13:24 Uhr

ok, mach ich gleich

05.05.2009 - 11:49 Uhr

@ herbivore

Danke für die Info. Wird schon gemacht.

05.05.2009 - 11:44 Uhr

@ JAck30lena

mouseleave bringt nicht viel, weil das auch beim Button-Überfahren innerhalb der Form stattfindet 🙁

05.05.2009 - 11:15 Uhr

@ tom-essen

danke für die Antwort. Das habe ich mir fast gedacht... Könntest du mir bitte sagen wie ich das machen soll?

05.05.2009 - 11:02 Uhr

Hallo,

es geht um folgendes:

Ich habe eine kleine Form (w=100;h=88), die 5 Buttons beinhaltet. 4 (38x38) werden mit Operationen belegt, der 5. Button (20x20) beendet die Form. Die Form wird mittig zum Mauszeiger geladen.

Das Besondere ist, dass die Form der Maus folgen soll. Klartext: wenn der Mauszeiger den oberen Rand der Form erreicht, soll die Form der Mausbewegung nach oben folgen. Das soll natürlich für alle 4 Seiten der Form gelten.

Mein Problem: Ich kann zwar die Form wie gewünscht verschieben, jedoch nur wenn ich die Maus ganz langsam bewege. Wird die Maus schneller bewegt, komme ich aus der Form raus.

Kann mir jemand helfen?

Vielen Dank.


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private Point mouseOffset;

        int xOffset;
        int yOffset;
        
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Point mousePos = Control.MousePosition;
            mousePos.Offset(mouseOffset.X - 50, mouseOffset.Y - 44);
            Location = mousePos;

            Refresh();
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.X == 2)
            {
                xOffset = -e.X - 2;
                yOffset = - e.Y;

                mouseOffset = new Point(xOffset, yOffset);
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                Location = mousePos;

                Refresh();
            }
            else if (e.X == 98)
            {
                xOffset = -e.X + 2;
                yOffset = -e.Y;

                mouseOffset = new Point(xOffset, yOffset);
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                Location = mousePos;

                Refresh();
            }
            else if (e.Y == 2)
            {
                xOffset = -e.X;
                yOffset = -e.Y - 2;

                mouseOffset = new Point(xOffset, yOffset);
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                Location = mousePos;

                Refresh();
            }
            else if (e.Y == 86)
            {
                xOffset = -e.X;
                yOffset = -e.Y + 2;

                mouseOffset = new Point(xOffset, yOffset);
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                Location = mousePos;

                Refresh();
            }

            //mouseOffset = new Point(xOffset, yOffset);
            //Point mousePos = Control.MousePosition;
            //mousePos.Offset(mouseOffset.X, mouseOffset.Y);
            //Location = mousePos;

            Refresh();
        }


        private void button5_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void Form1_LocationChanged(object sender, EventArgs e)
        {
            Refresh();
        }

    }
}