Zdrojové kódy pro vývojáře.
Přeskočit odkazy pro navigaci Top 10 přispěvatelů
UživatelČlánky
codeshare45
sochor1
stoupa1
tomas.oplt15
Článek: Změna pozice ovládacích prvků na formuláři (2)
Špatný Super
Autor:
Vytvořeno:
Popularita:

Funcionalitu zabezpečuje fřída Designer, která zabezpečuje následující funkce:

Označení prvků na formuláři po kliknutí na prvek 
Změnu pozice ovládacího prvku
Změnu velikosti ovládacího prvku


 

Je možné označit jeden prvek na formuláři kliknutím
Je možné označit více prvků na fomuláři kliknutím na formulář. Táhnutí myši je možné specifikovat prostor ve kterém budou všechny ovládací prvky označené. 
Prvky, které podporují změnu pozice musí implemetovat interface IDesignControl

 

    public interface IDesignControl 
    {
        bool IsSelected { get; set; }
        RectTracker RectTracker { get; set; }
        int OriginalLeft { get; set; }
        int OriginalTop { get; set; }
        int OriginalWidth { get; set; }
        int OriginalHeight { get; set; }

    }

Tlačítko, které podporuje změnu pozice / velikosti implementuje IDesignControl interface

    public class MyButton : System.Windows.Forms.Button, IDesignControl
    {

        public bool IsSelected { get; set; }
        public RectTracker RectTracker { get; set; }
        public int OriginalLeft { get; set; }
        public int OriginalTop { get; set; }
        public int OriginalWidth { get; set; }
        public int OriginalHeight { get; set; }

    }


Na formuláři, který bude implementovat změnu je nutné vytvořit instanci třídy Designer.

des = new Designer(panel1);

Contructor parameter panel1 is control which will be designer area.

    public partial class Form1 : Form
    {
        Designer des = null;
        public Form1()
        {
            InitializeComponent();
            des = new Designer(panel1);
        }
    }

Je možné povolit / zakázat změnu pozice prvků nastavením proměnné DesignerMode.

des.DesignerMode = true;

 

Pokud označujete více prvků najednou pomocí myši, je třeba vyhodnotit, které prvky spadají do označené oblasti.
Toto zabezpečuje funkce region.IsVisible.

Region region = new Region(mp_Rect);

foreach (Control ctrl in DesignerForm.Controls)
{

    if (region.IsVisible(ctrl.Left, ctrl.Top) == true)
    {
        iDes.IsSelected = true;
        iDes.RectTracker = new RectTracker(ctrl);
    }

}

Třída RectTracker zobrazuje čtverec okolo označených prvků.

 

  Na stránku 
screen  Nový příspěvek
Název  Uživatel  Datum 
Poslední návštěva: 20:54:42, 22. září 2017 První  Předchozí  0 Záznamů  Další  Poslední  

Autor článku
Jméno
Pracovní pozice
Informace
Foto

   

Počet návštěvníků:75
 
  Kontakt