Windows Phone 8 C# Толщина поля в массиве

Я пытаюсь установить границу эллипса со значением из массива. Код, который у меня есть до сих пор, таков:

    private void Dots()
    {
        string[] strArray = new string[] { "387,10,396,432"}; // this is the margin

        foreach (string str in strArray)
        {

            Ellipse a = new Ellipse();
            a.Fill = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
            a.Margin = new Thickness(Convert.ToInt32(str)); // the margin goes here
            a.Width = 25;
            a.Height = 25;
            a.Tap += DotTap;

            LevelPanel1.Children.Add(a);
        }
    }

Теперь проблема в том, что я получаю сообщение об ошибке «Входная строка имеет неверный формат». Маржа в конечном итоге должна выглядеть так:

a.Margin = new Thickness(387,10,396,432);

Кто-нибудь сейчас, как это исправить? (ps я новичок в программировании на С#, поэтому извините, если это действительно глупый вопрос.)

Заранее спасибо.


person Fabian Wennink    schedule 02.11.2014    source источник


Ответы (1)


Это всего лишь одна строка, кстати.

Если вы хотите сделать это с помощью String[], сделайте это

string[] strArray = new string[] { "10","10","396","432" }; 
Thickness t = new Thickness(Convert.ToInt32(strArray[0]),
    Convert.ToInt32(strArray[1]),
    Convert.ToInt32(strArray[2]),
    Convert.ToInt32(strArray[3]));

В противном случае, если вы просто хотите сделать это с одной строкой, разделите ее с помощью "," в качестве разделителя.


Пример кода сплита

string str = "387,10,396,432";
string[] strArray = str.Split(',');
Thickness t = new Thickness(Convert.ToInt32(strArray[0]),
    Convert.ToInt32(strArray[1]),
    Convert.ToInt32(strArray[2]),
    Convert.ToInt32(strArray[3]));

Пример кода для нескольких полей

string[] strArray = new string[] { "387,10,396,432", "0,0,20,40" };

string[] first_margin = strArray[0].Split(',');
string[] second_margin = strArray[1].Split(',');

Thickness first_thickness = new Thickness(Convert.ToInt32(first_margin[0]),
    Convert.ToInt32(first_margin[1]),
    Convert.ToInt32(first_margin[2]),
    Convert.ToInt32(first_margin[3]));

Thickness second_thickness = new Thickness(Convert.ToInt32(second_margin[0]),
    Convert.ToInt32(second_margin[1]),
    Convert.ToInt32(second_margin[2]),
    Convert.ToInt32(second_margin[3]));

Пример использования вашего for each

string[] strArray = new string[] { "387,10,396,432", "0,0,20,40" };

foreach (string s in strArray)
{
    string[] margin = s.Split(',');

    Thickness thickness = new Thickness(Convert.ToInt32(margin[0]),
        Convert.ToInt32(margin[1]),
        Convert.ToInt32(margin[2]),
        Convert.ToInt32(margin[3]));


}
person Chubosaurus Software    schedule 02.11.2014
comment
Спасибо, это работает, но как я могу заставить это работать, если у меня несколько полей, а не только одно? - person Fabian Wennink; 02.11.2014
comment
@NLGameVideosNL просто сделайте еще одно разделение :), см. обновленное решение. - person Chubosaurus Software; 02.11.2014