Archiv der Kategorie: .NET

Tooltip in GridControl aus unangezeigter Spalte erstellen (DevExpress/WPF)

Für das GridControl in WinForms existiert eine sehr schöne Möglichkeit mittels ToolTipController einen Tooltip aus einer unsichtbaren Spalte der dahinterliegenden Datenquelle zu erstellen: Anleitung. In Wpf gibt’s keinen ToolTipController, weshalb man das ein bisschen anders machen muss (Quelle):

Zur besseren Orientierung findet sich im Folgenden ein großer Teil des XML-Baums, relevant ist eigentlich nur der Knoten „

    <dxb:BarManager x:Name="barManager" dxbh:BlendHelperForBarsAndRibbon.IsDesignControl="true">
        <DockPanel>
            <dxd:DockLayoutManager x:Name="dockLayoutManager">
                <dxd:LayoutGroup>
                    <dxd:TabbedGroup Name="tgProperties" ItemWidth="*" SelectedTabIndex="1">
                        <dxd:LayoutPanel Caption="Available Parameter" >
                            <dxg:GridControl x:Name="gridAvailableParameter" AutoPopulateColumns="True" HorizontalAlignment="Stretch" ItemsSource="{Binding ShownParametersInAvailableParameterGrid}" Margin="0,0,0,0" VerticalAlignment="Stretch">
                                <dxg:GridControl.Columns>
                                    <dxg:GridColumn FieldName="IrgendeinText">
                                        <dxg:GridColumn.CellTemplate>
                                            <DataTemplate>
                                                <dxe:TextEdit Name="PART_Editor">
                                                    <ToolTipService.ToolTip>
                                                        <Binding Path="Data.DazugehörigeToolTippText"/>
                                                    </ToolTipService.ToolTip>
                                                </dxe:TextEdit>
                                            </DataTemplate>
                                        </dxg:GridColumn.CellTemplate>
                                    </dxg:GridColumn>
                                <dxg:GridControl.View>
                                    <dxg:TableView BestFitMode="AllRows" BestFitArea="Header" AllowBestFit="True" AutoWidth="True" VerticalAlignment="Stretch" x:Name="tblParamList" ShownEditor="TableViewAvailableParameterBoxShown" HiddenEditor="TableViewAvailableParameterBoxHidden" ShowTotalSummary="True"/>
                                </dxg:GridControl.View>
                            </dxg:GridControl>
                        </dxd:LayoutPanel>                    
                    </dxd:TabbedGroup>
                </dxd:LayoutGroup>
            </dxd:DockLayoutManager>
        </DockPanel>
    </dxb:BarManager>

Quickstart: Use Selenium in C#

Heute (update 20.3.2018, Visual Studio 2017)

  • Datei -> Neu -> Projekt
  • Installiert -> Visual C# -> Klassischer Windows-Desktop -> Konsolen-App (.NET Framework)
  • Projekt -> NuGet-Pakete verwalten -> Durchsuchen: ‚Selenium‘ -> Selenium.WebDriver downloaden
  • Download jüngsten Mozilla GeckoDriver here: https://github.com/mozilla/geckodriver/releases
  • Unzip geckodriver.exe into /bin/Debug
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace SeleniumExampleInCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver();
            driver.Url = "http://www.google.de";
            driver.FindElement(By.Id("lst-ib")).SendKeys("IT Kosmopolit");
            driver.FindElement(By.Id("lst-ib")).SendKeys(Keys.Enter);
        }
    }
}

 
Früher

  • In Visual Studio: Project -> New -> Console Project
  • Download C#-Selenium client here: http://www.seleniumhq.org/download/
  • Create references to all .dlls there
  • Download Mozilla GeckoDriver here: https://github.com/mozilla/geckodriver/releases/tag/v0.11.1
  • Unzip geckodriver.exe into /bin/Debug
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace SeleniumExampleInCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver();
            driver.Url = "http://www.google.de";
            driver.FindElement(By.Id("lst-ib")).SendKeys("Projektfisch");
            driver.FindElement(By.ClassName("sfsbc")).Click();
        }
    }
}

Reference Manager (Visual Studio) erklärt

Reference Manager - Microsoft Visual Studio

Assemblies

Hier finden sich die dlls aus dem Ziel-Framework (bei mir .NET). Unterschied zwischen .NET und COM-Framework.

Unter der Spalte ‚Name‘ steht die Dateibeschreibung der .dll:

Reference Manager 2

Framework

Assemblies, die das Ziel-Framework (bei mir .NET) ausmachen. Bei mir befinden sich die angezeigten Assemblies hier: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5

Extensions

Assemblies von Drittanbietern

Per Tooltip kann man die Dateipfade der Assemblies sehen:

Reference Manager 3

Über die Auswahl der unter ‚Extensions‘ erscheinenden Assemblies entscheiden mehrere Registry-Variablen. Je höher die Framework-Version, desto mehr potenzielle Quellen gibt es. Die genaue Regel steht hier unter „2. Extension …“, wobei v.a. das Beispiel erhellend ist.

Es ist ratsam um die sog. Dll-Hell zu vermeiden, einen eigenen Ordner anzulegen, und die Referenzen konsequent nur aus diesem zu ziehen.

Recent

Die in letzter Zeit hinzugefügten Assemblies. Hier tauchen auch die in anderen Projekten hinzugefügten References auf.

Projects

Hier finden sich die anderen Projekte der aktuellen Solution. Eine goldene Regel lautet, dass man Projekte immer über diesen Weg referenzieren sollte.

COM

Hier finden sich die dlls aus dem COM-Framework. Unterschied zum .NET-Framework.

 

Best Practice

In einer solution mit mehrere Projekten, stopft man alle 3rd-party-dlls in einen separaten Ordner und referenziert diese dann mit Specific Version ‚false‘. Wenn man eine neue 3rd-Party-Version benutzen muss, dann kann man diese einfach im separaten Ordner austauschen. Einziger Wermutstropfen ist, dass man dann später nicht mehr den exakten Zustand der solution bestimmen kann.