Laden...

Forenbeiträge von srynoname Ingesamt 223 Beiträge

22.10.2006 - 15:51 Uhr

hallo,

wie kann ich denn widgets/grafische elemente möglichst wit außen positionieren (in der vorschau).
nehmen wir z.b. ein panel. das kann ich auch über die form hinausziehen. kann man irgendwo einstellen, das man es einfach nur so weit ziehen kann, wie die form (in der vorschau/nicht maximiert) groß ist?

schonmal vielen dank 🙂

22.10.2006 - 15:04 Uhr

ich glaube mit foxyproxy geht das,
http://www.2-power-n.com/features.html

Flexible mapping of sets of target domain names to sets of proxy servers.

Available proxy server is selected automatically.

aber ganz sicher bin ich mir auch nicht, probiers mal aus 🙂

22.10.2006 - 14:59 Uhr

Original von Borg
Scheinbar war der Satz wirklich zu kompliziert:

Panel.Controls.Clear()  

Danke, jetzt wo ich es weiß, ist es eigentlich logisch, aber mein Gedankengang war einfach, das Container grundsätzlich diverse Eigenschaften wie Clear() haben die man allesamt als Controls Property bezeichnet, auf die Idee, das diese so zu nutzen sind, bin ich dabei nicht gekommen, auch wenn es durchaus Sinn macht 😉

Und nein, was kürzeres gibt es nicht. Aber entweder klickst du dir das im Designer zusammen, definierst eine Konstante oder legst dir ein Template dafür an...

keine angst, das ist mir jetzt kurz genug, hatte davor nur
panel1.Controls.RemoveAt(i); und darum halt noch ne for schleife, aber da sich wahrscheinlich der index der verbleibenden elemente ändert, hätte das in der praxis probleme gegeben (bisher hatte ich immer nur ein "element" drinne).

22.10.2006 - 14:52 Uhr

Du musst also das Panel positionieren und dann alle vier Seiten als Anchor setzen.

Vielen Dank, mit

panel1.Anchor = (AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right);

funktioniert es, wie es soll 🙂
Ich frage mich nur, ob es da was kürzeres gibt, so a la panel.Anchor=AnchorStyles.All, aber zumindest IntelliSense zeigt nichts weiteres außer die 4 Richtungen und none an...

Ankern bedeutet, sich in einem bestimmten Abstand (=Ankerkette) von einem bestimmten Ort (=Ankerplatz) zu befinden.
Docken bedeutet, sich direkt fest an ein anderes Objekt zu binden (=Schiff an Kai, Space Shuttle an ISS etc).

Danke, das habe ich nun verstanden 🙂
Bei Dock ist es somit völlig unrelevant, wo das ganze mal anfangs saß, richtig?

Controls die andere Controls beinhalten können, haben eine Property Controls. (toller Satz) Diese stellt eine Methode Clear() zur Verfügung...

hmm, wie nutze ich denn diese Property Controls bzw. Clear()?
panel1.Clear() gibt es nämlich laut IntelliSense nicht?

22.10.2006 - 14:36 Uhr

Original von Borg
An allen vier Seiten verankern.

Das ist auch wieder nicht, was ich will:
Wähle ich bei den "erweiterten Optionen" (dieser kleine pfeil rechts oben wenn man das panel auf der form1 vorschau markiert) "im übergeordneten container andocken", kommt das hier heraus:

22.10.2006 - 14:31 Uhr

Danke für deine Antwort,

mit Control.Anchor

public Form1()
        {
            InitializeComponent();
            panel1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
        }

schaut das ganze leider so aus:

es soll aber nicht das panel nach rechts unten rutschen, sondern da bleiben wo es ist, von da aus soll es bis zum rechten rand und bis zum unteren rand gestreckt/verlängert werden.

Habe mir daraufhin mal Control.Dock angeschaut, aber das dockt/verschiebt dann den gesamten bereich in die entsprechende Richtung.
Das Panel soll aber da bleiben wo es ist, und von da aus dann soweit wie möglich nach rechts und unten gestreckt werden, also am ende so aussehen (fotomontage)

22.10.2006 - 12:59 Uhr

hallo,
habe in meiner form ein panel (der weiße bereich):

wird die form nun maximiert, schaut das ganze so aus:

das panel soll aber beim maximieren bis in die rechte, untere ecke vergrößert werden (der inhalt soll wohl gemerkt nicht "gezoomt" werden (d..h nicht die schrift größer etc), es soll einfach nur entsprechend mehr davon sichtbar sein).
gibt es hierfür schon eine vorgefertigte funktion, oder muss ich hier manuell rechnen und resizen?

und noch eine andere frage zum panel:
gibt es eine anweisung, um den kompletten inhalt des panels zu entfernen?
per schleife etc. geht das zwar, aber so n einzeiler wäre schon praktischer 🙂

schonmal vielen dank 🙂

22.10.2006 - 12:54 Uhr

bin absoluter anfänger, aber meine idee wäre, einfach ne (temporäre) entsprechende xml datei ohne userinteraktion zu schreiben, diese mit der vom letzten programmende zu vergleichen und schauen obs unterschiede gibt - wenn ja, dann fragen ob die änderungen gespeichert werden sollen, und wenn sie gespeichert werden sollen, einfahc die xml datei umbenennen zur endgültigen. gibt da ja irgendwas vorgefertigtes um den status der anwendung zu speichern...

22.10.2006 - 12:37 Uhr

hui wusste garnicht das man so einfach den standardbrowser aufrufen kann 🙂
habe mal geraten und es stimmt - wie bei webseiten/html:

System.Diagnostics.Process.Start("mailto:test@ka.com?subject=test&body=nachricht");

eine frage noch, wenn ich mehrmals auf meinen button, der die von dir genannte codeziele ausführt, klicke, bleibt das browserfenster nicht maximiert :
was kann man da machen?

nachtrag:
standardborwser -> firefox
ausgangssituation: browser geschlossen
nun klicke ich auf den button, der den entsprechenden befehl ausführt - firefox wird maximiert geöffnet, wie es sein soll.
wenn ich nun firefox minimiere und dann nochmals auf den button klicke, wird firefox in "normalgröße" angezeigt, nicht mehr maximiert.
wie lässt sich das ändern?

21.10.2006 - 23:04 Uhr

Guten Abend,

habe meinem Projekt eine Klasse class1.cs mit entsprechendem Inhalt hinzugefügt, nun Frage ich mich, wie ich denn am geschicktesten auf die Widgets/GUI Elemente meiner Form1 zugreifen kann?

Schonmal danke für eure Hilfe 🙂

21.10.2006 - 21:30 Uhr

Danke für die schnelle und vor allem hilfreiche Antwort, eine meiner nächsten Fragen wäre wohl gewesen, ob es nicht auch einen Einzeiler gibt, um die alten Items zu entfernen. Habe ja im IntelliSense gesucht, aber irgendwie hab ichs wohl übersehn :

21.10.2006 - 21:00 Uhr

Hallo,

habe mir eine simple "Live Search" (ok, nicht ganz, zu testzwecken wird sie erst nach einem Buttonklick ausgeführt, aber man kann ja einfach das Ereignis entsprechend ändern) gebastelt.
Diese erzeugt dynamisch eine SQL Abfrage, löscht alle bisherigen ListBox Items, und fügt die Treffer hinzu. Wiederhole ich aber die Suche mit dem selben Suchbegriff, werden die Treffer bzw. Items plötzlich mehr, was eigentlich nicht sein kann...

Hier einmal das Projekt:
http://agh653.ag.funpic.de/datenbank.zip
Erstellt mit Visual c# 2005 Express und SQL Server 2005 Express.
Hier auch einmal das ganze kompiliert:
http://agh653.ag.funpic.de/LiveSearch.zip

Gebt einfach mal als suchbegriff nur "d" ein, und klickt dann mehrmals auf "Suchen" - es werden bis zu 31 items, aber warum sind es nicht gleich 31?

Und der entsprechende Code:

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection1 = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True;User Instance=True");
            SqlCommand cmd = new SqlCommand();
            SqlDataReader reader;

   
            cmd.CommandText = "SELECT * FROM namen where name like '" + textBox1.Text + "%'";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection1;

            sqlConnection1.Open();

            reader = cmd.ExecuteReader();


            //anzeigen, wieviele items entfernt werden
            MessageBox.Show(listBox1.Items.Count.ToString());


            //remove all old items
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                listBox1.Items.RemoveAt(i);
            }

            //add new items
            while (reader.Read())
            {

                listBox1.Items.Add(reader["name"].ToString());
            }

            sqlConnection1.Close();
        }

ich kann einfach nicht verstehen, wo hier der fehler liegt.
hoffe ihr könnt mir helfen, schonmal vielen dank!

21.10.2006 - 16:53 Uhr

hallo,

wie kann ich denn eine variable wieder entfernen?

beispiel:

int x = 1;
//so, (int) x benötige ich nun nicht mehr und will nun eine stringvariable x - aber wie?
string x = "hello";

habs ja mal mit x=null probiert, aber das tuts auch net :
danke schonmal 🙂

21.10.2006 - 16:39 Uhr

habe hier einmal ein kurzes video erstellt, was mein problem ist:
http://agh653.ag.funpic.de/usercontrol.htm
ich füge also ein usercontrol hinzu. aber wie adde ich dieses zu meiner form?
nutze visual c# 2005 express.

danke 🙂

  • edit -
    ich denke MarsStein hat das anders gemeint, als ich es verstanden habe.
    siehe Mit Forms eine art Frame einer Website nachbauen?, Rainbirds post.
    mit diesem code ausschnitt scheine ich ganz gut zu fahren, muss das mal noch n bisle austesten.
21.10.2006 - 11:10 Uhr

danke, habe es nun mal mit usercontrols versucht, bin aber dann daran gescheitert diese zu nutzen ):
nutze visual c# 2005 express, ich erstelle eine neue windows anwendung, dnn gehe ich auf projekt - benutzersteuerelement hinzufügen. so, nun kann ich mein usercontrol gestalten. aber weiß nicht, wie ich es benutze ):

20.10.2006 - 23:12 Uhr

Danke für eure Antworten, auf die Idee, das ganze einfach entsprechend zu verschieben, bin ich im Nachhinein auch gekommen, aber die Panel Variante gefällt mir irgendwie besser 🙂
Ein "Problem" habe ich hierbei allerdings:
Bereits bei 2 gedockten Panels ist die übersichtlichkeit im Form Designer gleich 0.
Was kann ich da machen?
Evtl. die Panels irgendwie in ne andere Form auslagern, die ich dann auch wieder laden muss?^^

20.10.2006 - 22:06 Uhr

hallo,

wie kann ich denn eine form gegen eine andere austauschen bzw. einen teil/bestimmten bereich?

beispiel:
die meisten mailprogramme starten ja mit der ordneransicht (posteingang, postausgang) und einer liste der vorhandenen mails.
klickt man nun auf mail verfassen oder doppelt auf eine mail, um diese anzuzeigen, erscheint ein neues fenster, mit einem komplett anderen layout.
ignorieren wir nun mal, das sich hier ein neues fenster öffnet, und nehmen als beispiel einfach an, ich wollte den inhalt des neuen fensters in meiner aktuellen form haben bzw. die alte gegen diese austauschen - wie mache ich das?
form1 verstecken, form2 anzeigen geht nicht so ohne weiteres, da form2 nicht automatisch an der stelle angezeigt wird, an der form1 war (außer beide sind maximiert...).
ich denke mal es handelt sich hierbei um ein bekanntes problem, konte aber im FAQ nichts finden und weiß auch nicht, wie man dieses vorhaben nennt, somit konnte ich leider auch keine suchmaschine befragen.

schonmal vielen dank für eure hilfe 🙂

20.10.2006 - 21:56 Uhr

Original von Noodles
Vielleicht hilft Dir
>
.

Danke, das ist ne feine Ergänzung zu dem, was ich will, aber nicht ganz das was ich will 😉

In der listbox sollen alle einträge angezeigt werden, die den suchbegriff enthalten oder einen teil davon - ich dachte eigentlich daran, einfach die sql abfrage zu aktualisieren und dann die listbox einfach neu zu füllen, sofern das schnell genug geht.
evtl könnte man dann auch noch per doppelklick einfach einen eintrag aus den bereits reduzierten/treffern auswählen.
das dürfte die umsetzung in meinem fall theoretisch relativ einfach machen?

beispiel:
die listbox/sql tabelle enthält
abc
abc345
apfel
birne
boot
haus
test1
test

sobald ich einen suchbegriff angebe, soll die listbox bzw. sql abfrage entsprechend aktualisiert werden:

  1. sql abfrage aktualisieren: select * from tabelle where feld like suchbegriff% (ich weiß das die syntax falsch ist, dient nur zur veranschualichung)
  2. listbox mit den neuen daten füllen

wird also z.b. "abc" eingegeben, soll nur
abc
abc345
in der listbox stehen, bei eingabe von "t" alles was mit "t" anfängt etc.
(das bekomme ich alles über die sql abfrage hin, sobald ich weiß wie ich diese aktualisiere und sicherstelle das nach dem inhalt der variablen suchbegriff gesucht wird und nicht nach dem string "suchbegriff").

dein code beispiel im anderen thread wäre dann noch als ergäzung zum best passendsten/alphabetisch am nähesten eintrag ganz passend 🙂

20.10.2006 - 21:25 Uhr

guten abend,
habe leider keinen besseren titel gefunden/ka wie man dies genau nennt, also ich habe folgendes im sinn:

ein textfeld (suchbegriff) und darunter ne listbox.
sobald ich im textfeld etwas tippe, sollen in der listbox die passenden einträge angezeigt werden.

  1. gibt es dafür geschicktere elemente/widgets (?) als ein textfeld und eine listbox?
  2. (wie) kann man in einer listbox (oder was auch immer man für eine solche suche nutzt) einzelne zeilen formatieren?
  3. die daten für die suche kommen aus einer sql (server express) datenbank bzw. tabelle. die listbox ist bisher (soweit wie ich gekommen bin...) Daten gebunden. Wie aktualisiere ich deren Datenbankabfrage während dem Programmablauf?
  4. wie setze ich eine variable in eine db abfrage ein?
    select * from tabelle where feld='suchbegriff' <-- hier muss ich c# ja irgendwie mitteilen, dass "suchbegriff" nicht der string "suchbegriff" ist, sondern die variable suchbegriff/textBox.Text

vielen dank schonmal 🙂

19.10.2006 - 22:15 Uhr

hallo ZiMD,
das war jetzt mehr ne frage aus neugier, aber im endeffekt hätte ich es wohl früher oder später für ne dynamische eingabeprüfung genutzt, also z.b.
checkinput(bezeichnung,field,length,regex,emptyallowed)
->prüft dann field auf angegebene minimale/maximale länge, erlaubte zeichen bzw. ob das feld optional ist (emptyallowed auf yes/true, wie man das halt festlegen will)
hoffe das ist vom prinzip/sinn her verständlich.

allerdings könnte ich ja auch schlichtweg den inhalt des feldes übergeben =)

edit:
danke an auch beide, ist trotzdem mal interessant das zu wissen, kann man imemr gut gebrauchen 🙂

19.10.2006 - 22:08 Uhr

guten abend,
ist es möglich, ein Textfeld variabel anzusprechen?

Beispiel:
normal:

textBox1.Text="wert";

dynamisch theoretisch/veranschaulichung:

string textfeld="textBox1";
textfeld.Text="wert";

vielen dank schonmal 🙂

19.10.2006 - 22:03 Uhr

danke für die schnelle antwort, das ist ja echt genial - sowohl die schnelle antwort, als auch, dass es ohne probleme funktioniert und mit der "php syntax" (naja da gibs ja mehr oder weniger n standard) kompatibel ist 🙂

19.10.2006 - 21:52 Uhr

hallo,
gibt es denn bei c# von haus aus die möglichkeit, rückreferenzen zu nutzen, d.h. z.b.
[b]text[/b] durch text zu ersetzen (allerdings eben nur wenn die tags auch wieder geschlossen sind, sonst könnte man ja einfach [b] und [/b] einzeln ersetzen, sprich: extrahieren des textes zwischen [b] und [/b], das dann als rückreferenz nutzen und mit dieser ein neues muster angeben). ist jetzt natürlich nur n beispiel, für windows programme wird man wohl sehr selten was mit bb code zu tun haben, n besseres beispiel hatte ich nur grade nicht zur hand. gegooglt habe ich bereits, jedoch keine infos zu rückreferenzen gefunden (klar, über nen umweg würde es auch gehen...)

wer sich mit php auskennt:
$text=preg_replace("/[b](.*)[/b]/s", "'$1'",$text);
wie sowas in c# gehen würde, würde ich gerne wissen.

vielen dank schonmal 😃