Sida 1 av 1

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

Postat: 17 november 2017, 11:59:09
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é?

Re: Nullexception i C#

Postat: 17 november 2017, 12:14:23
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

Re: Nullexception i C#

Postat: 17 november 2017, 12:34:55
av TomasL
Verkar löst, återkommer.

Re: Nullexception i C#

Postat: 17 november 2017, 13:17:25
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();
		}

Re: Nullexception i C#

Postat: 17 november 2017, 14:01:37
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.

Re: Nullexception i C# [Löst]

Postat: 17 november 2017, 21:07:41
av TomasL
Vore kul om ni kunde testa det.

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

Postat: 18 november 2017, 02:49:25
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.