0

私は2列のウルトラウィングライドを持っています。要件は、セルを右クリックしたときに、[コピー]オプションを使用してコンテキストメニューを開くことです。次に、ユーザーは「コピー」を選択できます。これにより、セルの内容がコピーされます。

クラス「Label」を拡張するクラス「ExtendedLabel」がすでにあります。このラベルの機能は上記と同じです。違いは、ラベルで右クリックが発生することです。

問題は; このExtendedLabelをultrawingridの列データ型として統合するにはどうすればよいですか?これは私が試したものです:

public class Content
{
    public Content()
    {
        Item = new ExtendedLabel();
        Value = new ExtendedLabel();
    }

    ExtendedLabel Item = new ExtendedLabel();
    ExtendedLabel Value = new ExtendedLabel();
}

Content a = new Content();
a.Item.Text = "Item1";   // The ExtendedLabel has a property called "Text"
a.Value.Text = "Value1";

Content b = new Content();
a.Item.Text = "Item2";
a.Value.Text = "Value2";

List<Content> contents = new List<Content>();
contents.Add(a);
contents.Add(b);

ultrawingrid.DataSource = contents;

グリッドはこんな感じになりました。

Item                            Value
-------------------------------------------------------------
{ExtendedLabel, Text: Item1}    {ExtendedLabel, Text: Value1}
{ExtendedLabel, Text: Item2}    {ExtendedLabel, Text: Value2}

一方、私が欲しかったのは:

Item     Value
---------------
Item1    Value1
Item1    Value1

これらすべてに加えて、私はこれを正しく行っていますか?これがここでの最良のアプローチですか?そうでない場合は、どのように?

TIA!

4

2 に答える 2

0

テストされていませんが、グリッドはクラスのパブリックメンバーにバインドされていると思います。
これが実行可能な場合は、内部ラベルの表示をプライベートに変更し、アイテムと値を2つの内部ラベルのテキストとして公開します。

public class Content 
{ 
    public Content() 
    { 
        Item = new ExtendedLabel(); 
        Value = new ExtendedLabel(); 
    } 

    private ExtendedLabel internal_Item = new ExtendedLabel(); 
    private ExtendedLabel internal_Value = new ExtendedLabel(); 

    public string Item
    { 
        get{return internal_Item.Text;}
        set{internal_Item.Text = value;}

    }
    public string Value
    { 
        get{return internal_Value.Text;}
        set{internal_Value.Text = value;}
    }
} 
于 2012-08-13T13:02:04.267 に答える
0

最適な方法は、必要なプロパティを公開するデータ オブジェクトにグリッドをバインドすることです。たとえば、次のクラスを持つことができます。

public class DataItem
{
  public string Item {get;set; }
  public string Value {get;set;}
}

次に、リストを作成し、それをグリッドにバインドします。これは、グリッドが各パブリック プロパティの列を作成するため、グリッドで期待する値を取得できるためです。リストが変更される可能性があり、それらの変更に応じてグリッドを更新する必要がある場合は、List ではなく BindingList を使用する必要があることに注意してください。

デフォルトでは、グリッドで値を編集でき、キーボードで動作するグリッドにコピー アンド ペースト動作が組み込まれます。ヘルプには、WinGrid で動作するアプリケーションで編集メニューを作成する方法を示すがあります。

グリッドのコピー アンド ペースト機能がニーズを満たしている場合は、これらと同じオプションを公開するグリッド自体のコンテキスト メニューを公開できます。

于 2012-08-14T02:09:14.853 に答える