私はPowershellコマンドを使用してC#WPFでこれを書いています。C#WPF DataGridで行の値を選択するにはどうすればよいですか?
私は、最初のデータグリッドの列オブジェクトを作成します。
public class Item
{
public object ID { get; set; }
public object ProcessName { get; set; }
public object Handles { get; set; }
public object NPM { get; set; }
public object PM { get; set; }
public object WS { get; set; }
public object Path { get; set; }
}
その後、次のコードは、私のPC上で実行中のすべてのプロセスを示してデータグリッドを取り込みます
private void btnGetProcess_Click(object sender, RoutedEventArgs e)
{
//Creates fields
DataGridTextColumn c1 = new DataGridTextColumn();
c1.Header = "ID";
c1.Binding = new Binding("ID");
dgdProcessList.Columns.Add(c1);
DataGridTextColumn c2 = new DataGridTextColumn();
c2.Header = "Process Name";
c2.Binding = new Binding("ProcessName");
dgdProcessList.Columns.Add(c2);
DataGridTextColumn c3 = new DataGridTextColumn();
c3.Header = "Handles";
c3.Binding = new Binding("Handles");
dgdProcessList.Columns.Add(c3);
DataGridTextColumn c4 = new DataGridTextColumn();
c4.Header = "NPM(K)";
c4.Binding = new Binding("NPM");
dgdProcessList.Columns.Add(c4);
DataGridTextColumn c5 = new DataGridTextColumn();
c5.Header = "PM(K)";
c5.Binding = new Binding("PM");
dgdProcessList.Columns.Add(c5);
DataGridTextColumn c6 = new DataGridTextColumn();
c6.Header = "WS(K)";
c6.Binding = new Binding("WS");
dgdProcessList.Columns.Add(c6);
DataGridTextColumn c7 = new DataGridTextColumn();
c6.Header = "Path";
c6.Binding = new Binding("Path");
dgdProcessList.Columns.Add(c7);
//Connection to hostname successful
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
PowerShell ps = PowerShell.Create(); // Create a new PowerShell instance
ps.Runspace = runspace; // Add the instance to the runspace
ps.Commands.AddScript("Get-Process | Select-Object ID, ProcessName, Handles, NPM, PM, WS, Path"); // Add a script
Collection<PSObject> results = ps.Invoke();
runspace.Close();
foreach (PSObject obj in results)
{
object IDOutput;
object ProcessNameOutput;
object HandlesOutput;
object NPMOutput;
object PMOutput;
object WSOutput;
object PathOutput;
IDOutput = obj.Properties["ID"].Value;
ProcessNameOutput = obj.Properties["ProcessName"].Value;
HandlesOutput = obj.Properties["Handles"].Value;
NPMOutput = obj.Properties["NPM"].Value;
PMOutput = obj.Properties["PM"].Value;
WSOutput = obj.Properties["WS"].Value;
PathOutput = obj.Properties["Path"].Value;
dgdProcessList.Items.Add(new Item() { ID = IDOutput, ProcessName = ProcessNameOutput, Handles = HandlesOutput, NPM = NPMOutput, PM = PMOutput, WS = WSOutput, Path = PathOutput });
}
}
私はどのように把握しようとしています選択された行の値を取得します。具体的には、私が選択した行の「ID」フィールド値を取得できるようにしたい。
さまざまなプロパティのバリエーション(SelectedItem、SelectedValue、GetValueなど)を使用して再生していますが、動作しないようです。
MessageBox.Show(dgdProcessList.SelectedValue.ToString());
任意の助けが理解される:例えば、このコードは、値(ProjectName.FormName +アイテム)ではなく、実際のオブジェクト値を返します!ありがとうございました。
'Item'は何ですか? –
@ MathiasR.Jessenは、上記のメッセージボックスの例を使用したときに受け取るリテラルテキストです。 –
いいえ、 'dgdProcessList.Items.Add(new Item(){{{})' '' - 'Item'とは何ですか? –