[제품종류] 해당사항 없음
[개발환경] Visual Studio 2008 C#
=============== 질 문 ===============안녕하세요,
개발중에 어려움이 있어 문의 드립니다.
질문1.
현재 개발중인 과제가 시리얼포트 두개로 똑 같은 두개의 Device를 제어 합니다.
한 개의 화면에 두개 Form을 띠울수있을까요?
예를들어 한 개의 화면의 A Form에는 Login 화면을 띠우고, B Form에는 Test 화면
A Form에서 Login 하고 Test Info 화면으로 넘어가도 B Form은 가만히 있는식…
암튼 두개 Form을 한화면에서 각각 제어하고 싶습니다.
이게 가능해야 기존 1 Device로 만든 소스를 그대로 사용할수있어서요.
질문2.
File.Copy() 함수로 카피나, StreamWriter.WriteLine() 함수로 USB에 파일을 저장하는데, 가끔씩 저장이 안되어 있어서요
혹시 USB제거 전에 뭔가를 해야하나요? (예전에 안전제거 같은데 있었는데…)
=============== 답 변 ===============
안녕하세요.
[질문1에 대한 답변]
MainForm의 공통영역에 표시할 내용(Test 화면)을 구성하고 ChildForm을 MainForm의 절반크기로 만든 뒤 Login, Test Info화면(A Form)을 구성하여 ChildForm을 출력하면 원하시는 기능과 같이 사용이 가능합니다.
ChildForm 위치의 경우 SmartForm의 ChildFormLocation 메소드 기능을 사용하시면 변경이 가능하니 참고하시기 바랍니다.
[질문2에 대한 답변]
USB Memory가 제품에 완전히 마운트가 되어야 카피, 쓰기, 저장 등이 정상적으로 동작하기 때문에 USB Memory가 정상적으로 마운트되었는지 체크할 필요가 있을 것으로 보입니다.
SmartMemory에 EvtExternalStorageAttached 이벤트를 참고하시면 USB Memory가 마운트되었는지 확인하실 수 있습니다.
자세한 설명을 원하신다면 070-7094-5002로 전화주시면 자세하게 안내해드리겠습니다.
감사합니다.
=============== 답 변 ===============
답변내용이 "동일한 폼을 두개 띠우는것"과는 차이가 있습니다.
그룹박스를 여러개 만들어놓고 Visible 속성을 바꾸는 것도 "동일한 폼을 두개 띠우는것" 과는 거리가 있어보입니다.
아시다시피, 동일한폼 두개를 띠우고 싶은것은 기존에 개발해놓은 소스를 최대한 활용하기 위함입니다.
=============== 답 변 ===============
안녕하세요.
SmartGroupBox를 사용하여 대체할 수 있는 방법으로 설명을 드렸던 것이지만 사용하기에 몇가지 문제점이 있다고 피드백을
주셨습니다.
피드백주신 문제점을 해결하기 위해서는 사용자 정의 컨트롤을 만들어서 사용해야 하지만 저희 SmartX Framework의 경우
사용자 정의 컨트롤로 만들 경우 투명 처리 및 이미지 처리 등이 매끄럽지 않게 동작할 수 있기 때문에 디자인 코드를 클래스로 만든
뒤 호출하여 사용해야 합니다.
Control 그룹을 추가하는 방법은 아래와 같습니다.
1. Form에 GroupBox를 구성한 뒤 Designer.cs에 있는 디자인 구성 코드를 복사하여 미리 제작해둔 Class에 붙여넣기
2. 해당 Class를 인스턴싱하여 동일한 구성된 GroupBox 및 Control 들을 생성하기
3. 생성한 GroupBox의 위치를 설정하고 SmartForm에 Controls.Add를 사용하여 Control을 추가하기
Class 코드 구성에 대한 자세한 코드와 이벤트 처리 방법에 대한 코드는 아래의 예시 코드를 확인해주시기 바랍니다.
감사합니다.
[예시코드]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ControlGroup group1;
ControlGroup group2;
private void Form1_Load(object sender, EventArgs e)
{
smartForm1.MainForm = this;
}
private void smartButton2_Click(object sender, EventArgs e)
{
group1 = new ControlGroup();
group1.Location1 = new Point(50, 20);
smartForm1.Controls.Add(group1.getGroupBox1);
group1.getGroupBox1.BringToFront();
group1.buttonClick += new EventHandler(group1_buttonClick);
}
private void group1_buttonClick(object sender, EventArgs e)
{
SmartX.SmartMessageBox.Show("Click");
}
private void smartButton3_Click(object sender, EventArgs e)
{
group2 = new ControlGroup();
group2.Location1 = new Point(400, 20);
smartForm1.Controls.Add(group2.getGroupBox1);
group2.getGroupBox1.BringToFront();
group2.buttonClick += new EventHandler(group2_buttonClick);
}
private void group2_buttonClick(object sender, EventArgs e)
{
SmartX.SmartMessageBox.Show("Click");
}
}
public class ControlGroup
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.Component
ResourceManager(typeof(Form1));
private SmartX.SmartGroupBox smartGroupBox1;
private SmartX.SmartButton smartButton1;
private SmartX.SmartRadioButton smartRadioButton1;
public ControlGroup()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.smartGroupBox1 = new SmartX.SmartGroupBox();
this.smartButton1 = new SmartX.SmartButton();
this.smartRadioButton1 = new SmartX.SmartRadioButton();
//
// smartGroupBox1
//
this.smartGroupBox1.BackGround = null;
this.smartGroupBox1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))),
((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.smartGroupBox1.BackImage = ((System.Drawing.Image)(resources.GetObject("smartGroupBox1.
BackImage")));
this.smartGroupBox1.Controls.Add(this.smartButton1);
this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))),
((int)(((byte)(110)))), ((int)(((byte)(165)))));
this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))),
((int)(((byte)(110)))), ((int)(((byte)(165)))));
this.smartGroupBox1.FrameLineThickness = 2;
this.smartGroupBox1.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.None;
this.smartGroupBox1.HeaderHeightOffset = 12;
this.smartGroupBox1.Location = new System.Drawing.Point(51, 497);
this.smartGroupBox1.Name = "smartGroupBox1";
this.smartGroupBox1.RoundRadius = 5;
this.smartGroupBox1.Size = new System.Drawing.Size(284, 108);
this.smartGroupBox1.TabIndex = 8;
this.smartGroupBox1.Text = "smartGroupBox1";
this.smartGroupBox1.TextColor = System.Drawing.Color.White;
//
// smartButton1
//
this.smartButton1.BackGround = this.smartGroupBox1;
this.smartButton1.BackGroundColor = System.Drawing.Color.LightBlue;
this.smartButton1.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))),
((int)(((byte)(110)))), ((int)(((byte)(165)))));
this.smartButton1.ButtonDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))),
((int)(((byte)(76)))), ((int)(((byte)(129)))));
this.smartButton1.ButtonImageAutoSize = true;
this.smartButton1.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
this.smartButton1.ButtonText = "";
this.smartButton1.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
this.smartButton1.GroupID = 0;
this.smartButton1.ImageDisable = null;
this.smartButton1.ImageDown = ((System.Drawing.Image)(resources.GetObject("smartButton1.
ImageDown")));
this.smartButton1.ImageUp = ((System.Drawing.Image)(resources.GetObject("smartButton1.ImageUp")));
this.smartButton1.Location = new System.Drawing.Point(6, 25);
this.smartButton1.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
this.smartButton1.Name = "smartButton1";
this.smartButton1.NestedClickEventPrevent = false;
this.smartButton1.OutlinePixel = 2;
this.smartButton1.OverlapOptimize = true;
this.smartButton1.RepeatInterval = 200;
this.smartButton1.RepeatIntervalAccelerate = null;
this.smartButton1.RoundSize = 10;
this.smartButton1.SafeInterval = 200;
this.smartButton1.Size = new System.Drawing.Size(203, 42);
this.smartButton1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
this.smartButton1.TabIndex = 0;
this.smartButton1.Text = null;
this.smartButton1.TextColor = System.Drawing.Color.White;
this.smartButton1.TextColorDisable = System.Drawing.Color.Gray;
this.smartButton1.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))),
((int)(((byte)(238)))), ((int)(((byte)(255)))));
this.smartButton1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
this.smartButton1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
this.smartButton1.Click += new EventHandler(smartButton1_Click);
//
// smartRadioButton1
//
this.smartRadioButton1.BackGround = this.smartGroupBox1;
this.smartRadioButton1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))),
((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.smartRadioButton1.Checked = false;
this.smartRadioButton1.GroupID = 0;
this.smartRadioButton1.ImageCheckRadioButton = null;
this.smartRadioButton1.ImageUnCheckRadioButton = null;
this.smartRadioButton1.Location = new System.Drawing.Point(22, 32);
this.smartRadioButton1.Name = "smartRadioButton1";
this.smartRadioButton1.OutputOnly = false;
this.smartRadioButton1.OverlapOptimize = true;
this.smartRadioButton1.RadioBackColor = System.Drawing.Color.White;
this.smartRadioButton1.RadioCheckColor = System.Drawing.Color.DarkOrchid;
this.smartRadioButton1.RadioOutlineColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))),
((int)(((byte)(110)))), ((int)(((byte)(165)))));
this.smartRadioButton1.RadioSymbolSize = 14;
this.smartRadioButton1.Shadow = false;
this.smartRadioButton1.Size = new System.Drawing.Size(162, 28);
this.smartRadioButton1.TabIndex = 0;
this.smartRadioButton1.Text = "smartRadioButton1";
this.smartRadioButton1.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))),
((int)(((byte)(42)))), ((int)(((byte)(82)))));
this.smartRadioButton1.TextColorDisable = System.Drawing.Color.Gray;
this.smartRadioButton1.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle;
this.smartRadioButton1.Click += new EventHandler(smartRadioButton1_Click);
this.smartGroupBox1.Controls.Add(this.smartButton1);
this.smartGroupBox1.Controls.Add(this.smartRadioButton1);
}
public SmartX.SmartGroupBox getGroupBox1
{
get
{
return smartGroupBox1;
}
}
public Point Location1
{
set
{
smartGroupBox1.Location = value;
}
}
public event EventHandler buttonClick;
private void smartButton1_Click(object sender, EventArgs e)
{
if (buttonClick != null)
{
buttonClick(sender, e);
}
}
}