Hallo Leute,
hier eine kleine Klasse, mit der Ihr den Namen eines Objektes erhaltet, um dieses ansprechen zukönnen.
Außerdem noch ein bisschen was für DataGridViewColumns, um eine Spalte oder deren Index zu erhalten anhand des HeaderTextes.
Spoiler anzeigen
Ein Aufruf sieht wie folgt aus:
- dgv_ComputerDB == DataGridView
- "Benutzer" == HeaderText einer DataGridViewColumn
Spoiler anzeigen
hier eine kleine Klasse, mit der Ihr den Namen eines Objektes erhaltet, um dieses ansprechen zukönnen.
Außerdem noch ein bisschen was für DataGridViewColumns, um eine Spalte oder deren Index zu erhalten anhand des HeaderTextes.
C#-Quellcode
- using System.Collections.Generic;
- using System.Linq;
- using System.Data;
- using System.Windows.Forms;
- static class Communicator
- {
- /// <summary>
- /// Uses Reflection to receive the Designer Name of the passed Object on that Form
- /// <para>Works for WPF Windows aswell</para>
- /// </summary>
- /// <param name="target">object you want the name of</param>
- /// <param name="parent">Form Control on which that object is hosted</param>
- /// <returns>returns the Designer Name</returns>
- public static string getObjectName(object target, Form parent)
- {
- List<System.Reflection.FieldInfo> parentInfos = new List<System.Reflection.FieldInfo>(
- parent.GetType().GetFields(
- System.Reflection.BindingFlags.Public |
- System.Reflection.BindingFlags.NonPublic |
- System.Reflection.BindingFlags.Instance
- ));
- return parentInfos.Find(
- info=>target==info.GetValue(parent)
- ).Name;
- }
- /// <summary>
- /// Gets a DataGridViewColumn by searching for the passed HeaderText
- /// </summary>
- /// <param name="headerText">The HeaderText displayed by the searched column</param>
- /// <param name="targetView">The DataGridView that contains that column</param>
- /// <returns>returns DataGridViewColumn with matching HeaderText</returns>
- public static DataGridViewColumn getColumnByHeader(string headerText, DataGridView targetView)
- {
- return targetView.Columns.Cast<DataGridViewColumn>()
- .Where(c=>c.HeaderText==headerText)
- .Select(c=>c).ToList().FirstOrDefault();
- }
- /// <summary>
- /// Gets the index of a DataGridViewColumn by searching for the passed HeaderText
- /// </summary>
- /// <param name="headerText">The HeaderText displayed by the searched column</param>
- /// <param name="targetView">The DataGridView that contains that column</param>
- /// <returns>returns index of DataGridViewColumn with matchin HeaderText</returns>
- public static int getColumnIndexByHeader(string headerText, DataGridView targetView)
- {
- return targetView.Columns.Cast<DataGridViewColumn>()
- .Where(c=>c.HeaderText==headerText)
- .Select(c=>c.Index).ToList().FirstOrDefault();
- }
- }
Ein Aufruf sieht wie folgt aus:
- dgv_ComputerDB == DataGridView
- "Benutzer" == HeaderText einer DataGridViewColumn
C#-Quellcode
- void test()
- {
- var objectName = Communicator.getObjectName(dgv_ComputerDB.Columns[0], this);
- var columnByHeader = Communicator.getColumnByHeader("Benutzer", dgv_ComputerDB);
- var columnIndex = Communicator.getColumnIndexByHeader("Benutzer", dgv_ComputerDB);
- var combination = Communicator.getObjectName(
- Communicator.getColumnByHeader("Benutzer", dgv_ComputerDB)
- , this
- );
- }