Urklipps-sparare, var Nullexception i C# [Löst]

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45167
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Urklipps-sparare, var Nullexception i C# [Löst]

Inlägg av TomasL »

Har följande kod:

Kod: Markera allt

 public void myTImer_TIck(object source, EventArgs e)
       {
          if (Clipboard.ContainsImage())
            {
                Bitmap org = new Bitmap(System.Windows.Forms.Clipboard.GetImage());
Jag får nullexception på raden ovan.
Följande funkar dock:

Kod: Markera allt

private void SaveButtonClick(object sender, MouseButtonEventArgs e)
        {
           if (Clipboard.ContainsImage())
            {
                Bitmap org = new Bitmap(System.Windows.Forms.Clipboard.GetImage());
Varför blir det på detta viset?
Någon som har någon idé?
Senast redigerad av TomasL 17 november 2017, 21:22:01, redigerad totalt 2 gånger.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Nullexception i C#

Inlägg av johano »

Ur dokumentationen:
https://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.containsimage(v=vs.110).aspx skrev: System_CAPS_noteNote
The Clipboard class can only be used in threads set to single thread apartment (STA) mode. To use this class, ensure that your Main method is marked with the STAThreadAttribute attribute.
Kan det vara så att VB.Net TimerControl's Tick-event exekverar på en annan tråd än din "main"-tråd?

/j
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45167
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nullexception i C#

Inlägg av TomasL »

Verkar löst, återkommer.
Användarvisningsbild
sommarlov
Inlägg: 514
Blev medlem: 28 november 2015, 19:03:40
Ort: 08

Re: Nullexception i C#

Inlägg av sommarlov »

För att skriva till clipboard, läsa är övning för intresserade.

Kod: Markera allt

		public static void SetClipboard(string message) {
			var thread = new Thread(() => Clipboard.SetText(message));
			thread.SetApartmentState(ApartmentState.STA);
			thread.Start();
			thread.Join();
		}
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45167
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nullexception i C#

Inlägg av TomasL »

Lade till Clipboard.clear() vid initiering och efter det att bilden sparats.
Det är baserat på https://clipsa.codeplex.com/

Håll till godo, ett litet snabbhack nu på morgonen.
Det är ett VS2010 projekt.

Högerklicka för att komma till inställningarna.
Om AutoName är ikryssade så sparas bilden i vald katalog med valt namn, när man klickar på "Save".
Annars får man upp en normal "Spara som"-dialog.
Är Autosave ikryssad, så sparas bilden så fort man klippt ur den i vald katalog med valt namn.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45167
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nullexception i C# [Löst]

Inlägg av TomasL »

Vore kul om ni kunde testa det.
Användarvisningsbild
papabear
Inlägg: 821
Blev medlem: 14 mars 2004, 03:27:12
Ort: Eskilstuna
Kontakt:

Re: Urklipps-sparare, var Nullexception i C# [Löst]

Inlägg av papabear »

Sparar tråden så att jag kommer ihåg att testa om typ en vecka när jag har tillgång till dator.
Skriv svar