Domanda

Sono un programmatore inesperto, completamente nuovo nella programmazione per Windows.

Sto scrivendo un piccolo programma che ho sempre desiderato. Sta scrivendo usando C # usando .net framework. almeno questo è quello che penso di fare. Tutti i discorsi su framework e .nets, windows form e win32 api mi hanno davvero confuso .. :(

comunque ho un semplice oggetto Form.

 Form f = new Form() ;
 f.Text = "" ;   
 f.ControlBox =false ;

Ora Come rimuovere tutti i bordi del modulo tranne uno? Come in, i bordi laterali dovrebbero andare, ma il bordo superiore dovrebbe rimanere

FormBorderStyle non ha nulla per questo

Inoltre, come risolvete voi stessi questi problemi senza chiedere? guarda il codice degli altri? leggere un libro? qualche sito web particolare? Ho cercato su Google, ma non ha mostrato nulla.

È stato utile?

Soluzione

Gidday,

Sfortunatamente, ciò è impossibile: puoi rimuovere l'intero bordo, quindi disegnare il tuo sul modulo e usare OnMouseDown, OnMouseUp e OnMouseMove per trascinare il tuo ...

Per risolvere da solo questo problema, vorrei esaminare vari modi diversi di rappresentare verbalmente il problema (ad es. "forma senza bordi", "bordi personalizzati su winform", ecc.) e passare un po 'di tempo a cercarlo su Google . Come dice saggiamente il mio capo, la produttività non dipende sempre dalla quantità di codice che tagli, ma anche da ciò che puoi imparare.

EDIT: come dice l'espressione popolare, " Google sa tutto " - è probabile che, se passi un po 'di tempo a cercare su Google e non riesci ancora a trovare nulla, probabilmente non è stato risolto o è molto raro. Un altro modo sarebbe quello di investire in alcuni buoni libri, ad es. Programmazione di Windows Form (o anche solo programmazione di Windows - è incredibilmente utile conoscere le meccaniche di base di Windows, e cose del genere sono ciò che ti aiuta a trasformarti in un grande sviluppatore. Un grande programmatore è bravo a programmare, ma un eccezionale sviluppatore è bravo a creare software utili. :)

Altri suggerimenti

Presumo che tu abbia provato FormBorderStyle.FixedSingle? Ciò visualizzerebbe un modulo con un bordo solo nella parte superiore. In ogni caso, in caso contrario, puoi impostare i moduli Regione.

Qualcosa come ...

public static void HideBorders(Form form)
{
    Rectangle newRegion = form.Bounds;
    Rectangle formArea = form.Bounds;
    Rectangle clientArea = form.RectangleToScreen(form.ClientRectangle);

    formArea.Offset(form.Location);
    newRegion.Offset(clientArea.X - formArea.X, 0);
    newRegion.Width = clientArea.Width;
    newRegion.Height = (clientArea.Y - formArea.Y) + clientArea.Height;

    form.Region = new Region(newRegion);
}

Quanto sai come fare? Tutte le cose che hai menzionato, file di aiuto, forum web, libri. La cosa principale è pratica, pratica, pratica. Più fai qualcosa e meglio dovresti diventare.

Non penso che sia effettivamente possibile fare esattamente ciò che descrivi, poiché .NET Framework delegherà il disegno del bordo del modulo e della barra del titolo a Windows stesso, che non ha alcuna opzione per ciò che descrivi AFAIK.

Invece, quello che vorrei fare è usare FormBorderStyle.None e quindi disegnare tutte le decorazioni delle finestre (barra del titolo, bordi) che desideri manualmente.

Una ricerca di Google per "quotless borderless C #" mostra questi siti come i primi tre successi:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top