このサイトにあるプログラムなんですが、(参照先のプログラムを参考にしてください)
フォームアプリとして起動して、リストボックスにある項目を選択すると
イベントハンドラーが発動するようになっていると思います。
イベントハンドラーの内容としていろんな状態を表すもの?となっています。
たとえば、bootmodeなら通常起動かセーフモードかを判別して値を返すようになっています。
それで質問なんですが
listboxのbootmodeを選択して、Normalの値が帰った時、何かしら実行するようにしたいのです。それで、
C#
1 prop = pi[i]; 2 break; 3 } 4 object propval = prop.GetValue(null, null); 5 textBox1.Text += "\r\nThe value of the "+propname+" property is: "+propval.ToString(); 6
この部分のコードの下に
C#
1if(propval.Tostring() == "Normal"){ 2Console.WriteLine("hello!") 3} 4コード
以上のようなコードを加えると
stringを暗黙でbool形に変換できませんとエラーが出てきます。
listboxのbootmodeを選択して、Normalの値が帰った時、何かしら実行するプログラムを作りたいので、だれか適切な助言をください。
※補足
以下のコードは実際打ったコードの全体です。
C#
1using System; 2using System.Collections; 3using System.ComponentModel; 4using System.Drawing; 5using System.Reflection; 6using System.Windows.Forms; 7 8namespace jikannwoenntyousuru 9{ 10 public class SystemInfoBrowserForm : System.Windows.Forms.Form 11 { 12 private System.Windows.Forms.ListBox listBox1; 13 private System.Windows.Forms.TextBox textBox1; 14 15 public SystemInfoBrowserForm() 16 { 17 this.SuspendLayout(); 18 InitForm(); 19 20 // Add each property of the SystemInformation class to the list box. 21 Type t = typeof(System.Windows.Forms.SystemInformation); 22 PropertyInfo[] pi = t.GetProperties(); 23 for (int i = 0; i < pi.Length; i++) 24 listBox1.Items.Add(pi[i].Name); 25 textBox1.Text = "The SystemInformation class has " + pi.Length.ToString() + " properties.\r\n"; 26 27 // Configure the list item selected handler for the list box to invoke a 28 // method that displays the value of each property. 29 listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged); 30 this.ResumeLayout(false); 31 } 32 33 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 34 { 35 // Return if no list item is selected. 36 if (listBox1.SelectedIndex == -1) return; 37 // Get the property name from the list item. 38 string propname = listBox1.Text; 39 40 if (propname == "PowerStatus") 41 { 42 // Cycle and display the values of each property of the PowerStatus property. 43 textBox1.Text += "\r\nThe value of the PowerStatus property is:"; 44 Type t = typeof(System.Windows.Forms.PowerStatus); 45 PropertyInfo[] pi = t.GetProperties(); 46 for (int i = 0; i < pi.Length; i++) 47 { 48 object propval = pi[i].GetValue(SystemInformation.PowerStatus, null); 49 textBox1.Text += "\r\n PowerStatus." + pi[i].Name + " is: " + propval.ToString(); 50 } 51 } 52 else 53 { 54 // Display the value of the selected property of the SystemInformation type. 55 Type t = typeof(System.Windows.Forms.SystemInformation); 56 PropertyInfo[] pi = t.GetProperties(); 57 PropertyInfo prop = null; 58 for (int i = 0; i < pi.Length; i++) 59 if (pi[i].Name == propname) 60 { 61 prop = pi[i]; 62 break; 63 } 64 object propval = prop.GetValue(null, null); 65 textBox1.Text += "\r\nThe value of the " + propname + " property is: " + propval.ToString(); 66 if (propval.Tostring() == "Normal") 67 { 68 Console.WriteLine("hello!"); 69 } 70 71 72 } 73 } 74 75 private void InitForm() 76 { 77 // Initialize the form settings 78 this.listBox1 = new System.Windows.Forms.ListBox(); 79 this.textBox1 = new System.Windows.Forms.TextBox(); 80 this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 81 | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); 82 this.listBox1.Location = new System.Drawing.Point(8, 16); 83 this.listBox1.Size = new System.Drawing.Size(172, 496); 84 this.listBox1.TabIndex = 0; 85 this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 86 | System.Windows.Forms.AnchorStyles.Right))); 87 this.textBox1.Location = new System.Drawing.Point(188, 16); 88 this.textBox1.Multiline = true; 89 this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; 90 this.textBox1.Size = new System.Drawing.Size(420, 496); 91 this.textBox1.TabIndex = 1; 92 this.ClientSize = new System.Drawing.Size(616, 525); 93 this.Controls.Add(this.textBox1); 94 this.Controls.Add(this.listBox1); 95 this.Text = "Select a SystemInformation property to get the value of"; 96 } 97 98 [STAThread] 99 static void Main() 100 { 101 Application.Run(new SystemInfoBrowserForm()); 102 } 103 } 104} 105
コピーしてみて試してみてください。
ただし、これを実行したらなぜかエラーが
CS1061 'object' に 'Tostring' の定義が含まれておらず、型 'object' の最初の引数を受け付ける拡張メソッド 'Tostring' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。 66 アクティブ
と変更されていました。
回答3件
あなたの回答
tips
プレビュー