WinForms에서 다국어 (컴퓨터 언어) 메모장을 만들고 있습니다. "언어"(파일, 편집,보기 등)라는 toolstripmenuitem이 포함 된 메뉴 스트립이 있습니다. "언어"를 클릭하면 몇 가지 선택 가능한 메뉴 항목이 있습니다. 이 작업을 수행하려고합니다. 항목을 클릭하면 체크 표시됩니다. 사용자가 다시 클릭하면 선택 표시되지 않습니다. Java, C, C++ 등의 언어별로 컴파일러를 어떻게 변형합니까?C# 메모장 프로젝트에 대한 도움말
0
A
답변
2
수표를 원하지 않으므로 둘 이상의 언어를 선택하지 않아도됩니다. 라디오 버튼이 필요합니다. 메뉴 조각에 대한 렌더러를 재정 의하여 하나를 가져올 수 있습니다. 또한 하나만 선택할 수 있도록 메뉴 항목의 CheckedChanged 이벤트를 처리해야합니다. 이 코드는 트릭을 수행합니다 :
public partial class Form1 : Form {
private ToolStripMenuItem[] languages;
private bool mBusy;
public Form1() {
InitializeComponent();
languages = new ToolStripMenuItem[] { javaToolStripMenuItem, cSharpToolStripMenuItem, pythonToolStripMenuItem };
foreach (var language in languages) {
language.CheckOnClick = true;
language.CheckedChanged += LanguageMenuItem_CheckedChanged;
}
menuStrip1.Renderer = new MyRenderer(languages);
}
void LanguageMenuItem_CheckedChanged(object sender, EventArgs e) {
if (mBusy) return;
mBusy = true;
ToolStripMenuItem item = sender as ToolStripMenuItem;
foreach (var language in languages) language.Checked = language == item;
mBusy = false;
}
private class MyRenderer : ToolStripProfessionalRenderer {
private ToolStripMenuItem[] languages;
public MyRenderer(ToolStripMenuItem[] languages) { this.languages = languages; }
protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e) {
ToolStripMenuItem item = e.Item as ToolStripMenuItem;
if (item != null && languages.Contains(item))
RadioButtonRenderer.DrawRadioButton(e.Graphics, e.ImageRectangle.Location,
System.Windows.Forms.VisualStyles.RadioButtonState.CheckedNormal);
else
base.OnRenderItemCheck(e);
}
}
}
+0
감사합니다. 이제는 각 프로그래밍 언어의 컴파일러에 액세스하는 방법에 대한 코드를 게시 할 수 있습니다. –
0
각 컴파일러의 경로/위치를 저장하는 설정 파일이 있어야합니다. 사용자가 언어를 선택하면 선택한 언어의 일치하는 컴파일러의 경로/위치를 가져와야합니다.
관련 문제
- 1. 프로젝트에 대한 참조를 C#
- 2. Windows에서 ERP 프로젝트에 대한 도움말 양식
- 3. C++ 문에 대한 도움말
- 4. 메모장 ++
- 5. C++/CLI 프로젝트에 대한 C++/CLI enum이 C++/CLI 프로젝트에 대한 참조와 함께 표시되지 않습니다.
- 6. C++ 링커 오류에 대한 도움말
- 7. 다른 프로젝트에 하나의 프로젝트에 대한 DLL 참조
- 8. SVN 설치에 대한 도움말
- 9. 웹 사이트를 C# 프로젝트에 임베드
- 10. C++ 프로젝트에 대한 문서를 만드는 방법은 무엇입니까?
- 11. XML 메모장 2007 년 나누기 MS Access 2007 도움말
- 12. C++ 네임 스페이스 도움말
- 13. 데이터베이스 디자인에 대한 도움말
- 14. Xcode 사용에 대한 도움말
- 15. 암호 프로젝트에 대한 조언
- 16. 표 정규화에 대한 도움말
- 17. C#의 단위 테스트에서 동기화에 대한 도움말
- 18. C#에서 CreateProcessWithLogonW 사용에 대한 도움말
- 19. C# 이벤트 수신 및 usercontrols에 대한 도움말
- 20. C#의 어셈블리 정보 파일에 대한 도움말
- 21. C 문자열 I/O에 대한 도움말
- 22. Visual C++ Express에서의 연결에 대한 도움말
- 23. 레지스트리 C++의 enum 값에 대한 도움말
- 24. C# P2P 채팅 프로그램 작성에 대한 도움말
- 25. C#에서 SQL 쿼리에 대한 도움말
- 26. 구조체 및 C 루핑에 대한 도움말
- 27. C#에서 간단한 SOAP 클라이언트에 대한 도움말
- 28. 프로젝트에 적합한 .NET CMS 선택 도움말
- 29. 바이트 시프트에 대한 도움말
- 30. 소스에서 nhibernate 빌드에 대한 도움말
질문이 명확하지 않습니다 - 메뉴 또는 컴파일러 목록이 도움이 필요합니까? –
가능한 경우 두 가지 모두에 대한 도움을 드리고 싶습니다. 컴파일이라고하는 menuitem처럼. –