Windows의 공유 리소스라고 가정합니다. 각 응용 프로그램의 복사본을 만드는 대신 모든 Winforms 응용 프로그램에서 사용하는 것처럼이 아이콘을 사용할 수있는 방법이 있습니까?Windows에서 기본 Winforms 아이콘을 찾을 수있는 위치는 어디입니까?
어떻게 Winforms 앱에 기본적으로 지정됩니까? 코드 나 프로젝트 설정에서 어떤 아이콘에 대한 참조도 보이지 않습니다. 그냥 "기본 아이콘"을 사용합니다.
Windows의 공유 리소스라고 가정합니다. 각 응용 프로그램의 복사본을 만드는 대신 모든 Winforms 응용 프로그램에서 사용하는 것처럼이 아이콘을 사용할 수있는 방법이 있습니까?Windows에서 기본 Winforms 아이콘을 찾을 수있는 위치는 어디입니까?
어떻게 Winforms 앱에 기본적으로 지정됩니까? 코드 나 프로젝트 설정에서 어떤 아이콘에 대한 참조도 보이지 않습니다. 그냥 "기본 아이콘"을 사용합니다.
System.Windows.Forms.dll 어셈블리에 리소스로 저장됩니다. 리플렉터로 사본을 얻을 수 있습니다. 어셈블리를 열고 Resources 노드를 열고 wfc.ico까지 내려갑니다. 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 저장을 클릭합니다. 기본 설정이므로 왜 사용해야하는지 확실하지 않습니다.
Project + 속성, 응용 프로그램 탭, 아이콘 설정을 사용하여 응용 프로그램에 대한 사용자 지정 아이콘을 설정합니다. 각 양식에는 고유 한 Icon 속성이 있습니다.
당신이 다음 (잠재적 응용 프로그램 아이콘/S 포함) 아이콘의 큰 컬렉션이 비주얼 스튜디오 2010가 설치되어있는 경우, 다음 디렉토리 체크 아웃 :
이%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033
이전에 유사한 디렉토리가있을 수 있습니다를 VS 버전은 필요한 경우 살펴 봅니다.
편집 :
Application.ico 및 ApplicationGeneric.ico +는 * .png를 대응 : app
에 대한 압축이 풀린 파일의 폴더에서 검색을 수행에
이 개 주목할만한 결과가있다 .
VS 2010을 사용하고 여기에있는 아이콘 중 하나라도 적합하면 하나만 복사 할 필요가 없습니다. 파일을 간접적으로 (공유/링크 된 파일로) 포함 할 수 있어야합니다. Existing Item...
대화 상자를 사용하여 추가; Add
버튼 옆에있는 화살표를 선택하고 Add As Link
옵션을 선택하면됩니다.
원하는대로 작동하지 않는 것은 단순히 전역 변경을 적용하기 위해 이러한 파일을 덮어 쓰는 것입니다.
System.Windows.Forms.dll 어셈블리에 리소스로 저장됩니다. 당신은 folow로 반사 사본을 얻을 수 :
public static class FormUtils
{
private static Icon _defaultFormIcon;
public static Icon DefaultFormIcon
{
get
{
if (_defaultFormIcon == null)
_defaultFormIcon = (Icon)typeof(Form).
GetProperty("DefaultIcon", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null, null);
return _defaultFormIcon;
}
}
public static void SetDefaultIcon()
{
var icon = Icon.ExtractAssociatedIcon(EntryAssemblyInfo.ExecutablePath);
typeof(Form)
.GetField("defaultIcon", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)
.SetValue(null, icon);
}
}
public static class FormExtensions
{
internal static void GetIconIfDefault(this Form dest, Form source)
{
if (dest.Icon == FormUtils.DefaultFormIcon)
dest.Icon = source.Icon;
}
}
을 그래서 당신은이 방법으로 같은 Icon.Handle에있는 코드에서 볼 수있다. 같은 참조. Form.DefaultIcon은 Form 클래스의 내부 지연로드 정적 속성입니다.
응용 프로그램의 기본 Winforms 아이콘을 재정의 할 수도 있습니다. Program.cs에서 내가 사용
FormUtils.SetDefaultIcon();
이 기능은 다음 응용 프로그램 등록 정보에 지정된 아이콘, 실행 파일의 아이콘이 기본 아이콘을 우선합니다.
C 번호 :
string IcoFilename = "C:\\Junk\\Default.ico";
using (System.IO.FileStream fs = new System.IO.FileStream(IcoFilename, System.IO.FileMode.Create))
{
this.Icon.Save(fs);
}
Visual Basic의 :
당신은 단지 Save
방법을 사용할 수 있습니다
Dim strFilename As String = "C:\Junk\Default.ico"
Using fs As New System.IO.FileStream(strFilename, IO.FileMode.Create)
Me.Icon.Save(fs)
End Using
감사합니다, 나는 나의 WPF 응용 프로그램의 기본 아이콘으로 사용하고 싶습니다. –