Вы должны войти, чтобы создавать сообщения и темы.

Преобразование UInt32 в char

Добрый день, пытаюсь получить время работы ноутбука от батареи если она полностью заряжена, но не получается преобразовать uint32 в char, Visual Studio  ошибок не показывает.
одскажыте пожалуйсто что надо исправить в коде?

Код

using System;
using System.Management;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public string batterylife { get; private set; }

        private void button1_Click(object sender, EventArgs e)
        {
            string expected_life = "";
            foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
               expected_life += (UInt32)mo["ExpectedLife"];
            expected_life += expected_life.ToCharArray();
            textBox1.Text = expected_life;
               }
        }}

        

 

Приветствую.
Чего? Где в вашем коде вообще char?
Char, это один символ. Зачем он вам?
Что вы тут:

string expected_life = "";
            foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
               expected_life += (UInt32)mo["ExpectedLife"];
            expected_life += expected_life.ToCharArray();

пытаетесь вообще сделать?

Добрый день. Что-то Я тоже не понимаю, что Ты пытаешься сделать.
У Меня нет ноутбука, но попробуйте этот код:

uint expected_life = 0;

foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
    expected_life += (UInt32)mo["ExpectedLife"];

textBox1.Text = expected_life.ToString();

Что он выводит?

Цитата: Adler от 21.02.2022, 13:27

Приветствую.
Чего? Где в вашем коде вообще char?
Char, это один символ. Зачем он вам?
Что вы тут:

 
 
 
 
string expected_life = "";
foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
expected_life += (UInt32)mo["ExpectedLife"];
expected_life += expected_life.ToCharArray();
string expected_life = ""; foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get()) expected_life += (UInt32)mo["ExpectedLife"]; expected_life += expected_life.ToCharArray();
 
string expected_life = "";
            foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
               expected_life += (UInt32)mo["ExpectedLife"];
            expected_life += expected_life.ToCharArray();

пытаетесь вообще сделать?

Добрый день, я пытаюсь узнать сколько в менутах может работать ноутбук при полном заряде батареи.
WMI explorer демонстрирует что для этого есть CIM_Battery Class с ExpectedLife properties.
В данном коде я пытаюсь получить текущие значение ExpectedLife.
Его тип данных UInt32, но я не понемаю как в textBox, отобразить uint32.

Цитата: yuri от 21.02.2022, 13:56

Добрый день. Что-то Я тоже не понимаю, что Ты пытаешься сделать.
У Меня нет ноутбука, но попробуйте этот код:

 
 
 
 
uint expected_life = 0;
 
foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
expected_life += (UInt32)mo["ExpectedLife"];
 
textBox1.Text = expected_life.ToString();
uint expected_life = 0; foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get()) expected_life += (UInt32)mo["ExpectedLife"]; textBox1.Text = expected_life.ToString();
 
uint expected_life = 0;

foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
    expected_life += (UInt32)mo["ExpectedLife"];

textBox1.Text = expected_life.ToString();

Что он выводит?

Добрый день, ошыбка, когда нажымаю на кнопку в программе, в vs studio ошибок нет.

MessageBox.Show((SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%", "Заряд батареи:", MessageBoxButtons.OK, MessageBoxIcon.Information);

А так? Или это не то, что нужно?
В textbox:

textBox1.Text = (SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%";

 

Лайкнул Владислав
Владислав
Цитата: Владислав от 21.02.2022, 14:14

Его тип данных UInt32, но я не понемаю как в textBox, отобразить uint32.

  .ToString()

Лайкнул Владислав
Владислав
Цитата: yuri от 21.02.2022, 14:18
 
 
 
 
MessageBox.Show((SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%", "Заряд батареи:", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show((SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%", "Заряд батареи:", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
MessageBox.Show((SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%", "Заряд батареи:", MessageBoxButtons.OK, MessageBoxIcon.Information);

А так? Или это не то, что нужно?
В textbox:

 
 
 
 
textBox1.Text = (SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%";
textBox1.Text = (SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%";
 
textBox1.Text = (SystemInformation.PowerStatus.BatteryLifePercent * 100).ToString() + "%";

 

К сожылению это не то, я жылаю узнать сколько преблезительно времени он может работать.
Там есть и другие интерестные вещи которые содержут uint32, и как мне их вывести в textBox я не понемаю. Смотрел видео Хачатура
Если я правельно понемаю чтобы выводить UInt в textBox или lable надо его переделовать в char?

Цитата: yuri от 21.02.2022, 13:56

Добрый день. Что-то Я тоже не понимаю, что Ты пытаешься сделать.
У Меня нет ноутбука, но попробуйте этот код:

 
 
 
 
uint expected_life = 0;
 
foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
expected_life += (UInt32)mo["ExpectedLife"];
 
textBox1.Text = expected_life.ToString();
uint expected_life = 0; foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get()) expected_life += (UInt32)mo["ExpectedLife"]; textBox1.Text = expected_life.ToString();
 
uint expected_life = 0;

foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
    expected_life += (UInt32)mo["ExpectedLife"];

textBox1.Text = expected_life.ToString();

Что он выводит?

Если пытаусь получить name, как в этом примери, то всё ок
.

string expected_life = "";
            foreach (var mo in new ManagementObjectSearcher("root\\cimv2", "select * from CIM_Battery").Get())
                expected_life += (string)mo["name"];
            textBox1.Text = expected_life.ToString();
        }

 

Мой комментарий парой сообщений выше прочитайте.
Вы явно с чего-то не того начали учить язык. Почитайте про преобразование типов. Это в самом начале любого обучающего курса, сразу после изучения самих типов.
UInt32, это число, вам нужно его вывести в Textbox. Textbox.Text это String, а не char. Я же вам написал, что char это ОДИН символ. Для преобразовния UInt32 (как и любого другого числа) в строку используйте ToString(). 

Лайкнул Владислав
Владислав