private static Array ResizeArray(Array arr, int[] newSizes) { if(newSizes.Length != arr.Rank) { throw new ArgumentException("arr must have the same number of dimensions " + "as there are elements in newSizes", "newSizes"); }
var temp = Array.CreateInstance(arr.GetType().GetElementType(), newSizes); int length = arr.Length <= temp.Length ? arr.Length : temp.Length; Array.ConstrainedCopy(arr, 0, temp, 0, length);
public class MachineData
{
public class Temperature
{
public double Offset1 { get; set; }
public double Offset2 { get; set; }
}
public class System
{
public string Name { get; set; }
public int Item1 { get; set; }
public int Item2 { get; set; }
public List<double> ListItems { get; set; }
public System()
{
ListItems = new List<double>();
}
}
public Temperature temperature = new Temperature();
public System system = new System();
}
public class YamlControl<T>
{
public void SaveYaml(string FileName, T data)
{
var serializer = SerializeToYaml(data);
using StreamWriter sw = new StreamWriter(FileName);
sw.Write(serializer);
}
public T LoadYaml(string FileName)
{
T machine = DeserializeFromYaml<T>(FileName);
return machine;
}
private string SerializeToYaml<T>(T obj)
{
var serializer = new SerializerBuilder().Build();
return serializer.Serialize(obj);
}
// Deserialize YAML to an object
private T DeserializeFromYaml<T>(string yaml)
{
var deserializer = new DeserializerBuilder().Build();
return deserializer.Deserialize<T>(File.ReadAllText(yaml));
}
}
RadioButton 사용방법 2번째 입니다. 지난번에 이어 이번에도 Tag 속성을 이용하여 RadioButton 을 간단하게 사용하는 방법을 구현합니다.
위 그림과 같이 GroupBox 안에 3개의 RadioButton 을 넣습니다. 그리고 순서대로 Tag 속성을 0,1,2 로 설정합니다.
첫번째 메뉴인 등심에 Checked 를 하고 GroupBox의 Tag 속성을 0으로 설정합니다.
그리고 RadioButton 3개의 Clicked 이벤트를 아래 코드와 같이 동일한 이벤트 함수로 구현합니다.
private void MenuClicked(object sender, EventArgs e) { RadioButton radio = sender as RadioButton; if (radio != null) { groupBox1.Tag = radio.Tag; // 눌려진 버튼의 tag 값을 groupBox 의 Tag 값에 저장한다. } }
그리고 주문 버튼에 대한 이벤트 함수를 아래와 같이 switch 문을 이용해서 구현하면 간단하게 RadioButton 에 대한 선택 구현을 할수 있습니다.
private void btnOrder_Click(object sender, EventArgs e) { var menu = int.Parse(groupBox1.Tag.ToString()); switch (menu) { case 0: textBox1.Text = "등심주문"; break; case 1: textBox1.Text = "안심주문"; break; case 2: textBox1.Text = "갈비주문"; break; } }