C# - własna ikonka w okienku nakładki [rozwiązany]


Rekomendowane odpowiedzi

Może zatem podam przepis jak utworzyć okienko w C# działające  w ZwCAD. Być może ktoś się skusi i zacznie tworzyć nakładki w tej technologii, a przy okazji dojdziemy do tego jak zaimplementować własną ikonkę.

Aby utworzyć  proste okno otwierane w ZwCAD wystarczy zainstalować VS2017 Community.

Przy instalacji wybrać tylko potrzebne komponenty czyli w zasadzie NetFramework.

Wybrać nowy projekt i w szablonach C# > klasyczny pulpit systemu Windows > Biblioteka klas (.Net Framework).  W tym miejscu musimy wybrać wersję Framework-u. Ja wybieram 4.5. Nadajemy nazwę projektowi

VS tworzy solucję ( rozwiązanie) w którym mamy plik class1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassLibrary2
{
    public class Class1
    {
    }
}

Następnie dodaję dodatkowe odwołania, których brakuje.

są to:

System.Xaml oraz WindowsFormsIntegration

oraz z katalogu ZwCADa

ZwDatabaseMgd.dll oraz ZwManaged.dll

VS tworzy solucję ( rozwiązanie) w którym mamy plik

Kodu w pliku Class1.cs nie zmieniamy

W menu Projekt wybieramy >Dodaj formularz Windows Form

Do rozwiązania zostanie dodane okienko Windows form

To okienku ma standardową ikonkę, którą potem ZWCAD podmienia na własną.

Klikając PKM na to okienko lub wciskając F7 otwieramy plik Form1.cs w którym mamy następujący kod

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 ClassLibrary2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

Dodaje jeszcze do rozwiązania kontrolkę WPF

W menu Projekt wybieramy >Dodaj kontrolkę użytkownika

i wybieramy szablon Kontrolka użytkownika (WPF)

Nadajemy kontrolce nazwę

W moim przypadku jest to mykon

<UserControl x:Name="mykon" x:Class="ClassLibrary2.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:ClassLibrary2"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
            
    </Grid>
</UserControl>

Teraz wystarczy wrócić do pliku Form1.cs

i odpowiednio go zmodyfikować

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

using zzr = ZwSoft.ZwCAD.Runtime;
using zza = ZwSoft.ZwCAD.ApplicationServices;

namespace ClassLibrary2
{
    public partial class Form1 : Form
    {
        public Form1(UserControl1 mykon)
        {
            InitializeComponent();
            System.Windows.Forms.Integration.ElementHost wg = new System.Windows.Forms.Integration.ElementHost();
            wg.AutoSize = true;
            wg.Dock = DockStyle.Fill;
            wg.Child = mykon;
            this.Controls.Add(wg);
        }
    }

    public class Command
    {
        [zzr.CommandMethod("WG_Hello_World", zzr.CommandFlags.Modal)]

        public void autocadokno()
        {
            UserControl1 mykon = new UserControl1();
            Form1 form = new Form1(mykon);
            zza.Application.ShowModalDialog(form);
        }
    }
}

Teraz wystarczy skompilować rozwiązanie i w katalogu z rozwiązaniem szukać katalogu bin, a  w w nim pliku ClassLibrary2.dll

poleceniem netload załadować plik i komendą WG_Hello_World uruchomić okienko, które przyjmie ikonkę standardową ZwCAD-a

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Temat do zamknięcia.

Znalazłem rozwiązanie.

string sciezka = moje_metody.sciezka_do_katalogu() + @"\images\favicon.ico";
Form1.ActiveForm.Icon = new System.Drawing.Icon(sciezka);

Ważne jest aby kod użyć po otwarciu się okienka, a nie przed. Gdyż w przeciwnym wypadku pojawi się ikona ZwCAD-a

wstawienie tego kodu tutaj:

public class Command
    {
        [zzr.CommandMethod("WG_Hello_World", zzr.CommandFlags.Modal)]

        public void autocadokno()
        {
            UserControl1 mykon = new UserControl1();
            Form1 form = new Form1(mykon);
 			string sciezka = moje_metody.sciezka_do_katalogu() + @"\images\favicon.ico";
            form.Icon = new System.Drawing.Icon(sciezka);
            zza.Application.ShowModalDialog(form);
        }
    }

nie da oczekiwanego efektu.

large.skala.png.a6d9d8234fe65a600316343570390094.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • dmatusz3 zmienił(a) tytuł na C# - własna ikonka w okienku nakładki [rozwiązany]
  • dmatusz3 zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.