c#,.net,vb.net,image-processing,gdi+ , Increase brightness of specific color in image?


Increase brightness of specific color in image?

Question:

Tag: c#,.net,vb.net,image-processing,gdi+

Having an image like this (original size increased by 100%):

close button image

Under C# or else Vb.Net, I wonder if I could use a color matrix or other workaround to increase the brightness/luminosity only to the white/greyed color of that image keeping the black background color untouched?

In other words, I would like to make the white cross brighter (only the cross, the white/grey pixels).

This is the brightness result that I expect to achieve:

enter image description here

Both images are taken from a 3rd-party application, the first image I shown is from a not focused close-button and the second image is the same button focused, the black portion of the image is the background of that 3rd-party app

The thing is that for personal reasons in my own application I'm using that image as a close-button and the same background color then I just wondered to simulate a button-focus in that way by giving brightness to the "X" in that image, I need to do the same with other images.

My knowledges of image processing are very poor, I've just been looking to approachs like this below, but I cannot get the expected result because the brightness increases in the entire image:

Adjust brightness contrast and gamma of an image

Update

I'm trying to use @Paul Ishak approach.

I have the image set on a picturebox, the idea is to increase the brightness when the user is hovering the control, and reset the image when the mouse leaves,

the second time that I try to adjust the brightness it throws an ArgumentException at this line:

 bm = New Bitmap(image.Width, image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)

with this message:

A first chance exception of type 'System.ArgumentException' occurred in System.Drawing.dll

This is the code that I'm using, what is wrong?:

    Private minimizeBitmap As Bitmap

    Private Sub PictureBox_MinimizeButton_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) _
    Handles PictureBox_MinimizeButton.MouseEnter

        Dim pcb As PictureBox = DirectCast(sender, PictureBox)

        If Me.minimizeBitmap Is Nothing Then
            Me.minimizeBitmap = New Bitmap(pcb.ClientRectangle.Width, pcb.ClientRectangle.Height)
            pcb.DrawToBitmap(Me.minimizeBitmap, pcb.ClientRectangle)
        End If

        pcb.BackgroundImage = BrightenPixels(Me.minimizeBitmap, threshold:=33, modTimes:=5D)

    End Sub

    Private Sub PictureBox_MinimizeButton_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) _
    Handles PictureBox_MinimizeButton.MouseLeave

        If Me.minimizeBitmap IsNot Nothing Then
            Me.minimizeBitmap.Dispose()
        End If

        DirectCast(sender, PictureBox).BackgroundImage = Nothing

    End Sub

    Public Function BrightenPixels(ByVal image As Bitmap, threshold As Decimal, modTimes As Decimal) As Bitmap

        Dim bmp As Bitmap
        modTimes = Math.Abs(modTimes)
        If image Is Nothing Then
            Throw New ArgumentNullException(paramname:="image")
        End If

        Try

            bmp = New Bitmap(image.Width, image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        Catch ex As Exception
            MsgBox(ex.GetType.Name)
            MsgBox(ex.Message)

        End Try

        Dim g As Graphics = Graphics.FromImage(bmp)
        g.DrawImage(image, New Point(0, 0))
        Dim rect As New Rectangle(New Point(0, 0), bmp.Size)
        Dim bitmapData As System.Drawing.Imaging.BitmapData = bmp.LockBits(rect, Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        Dim ptr As IntPtr = bitmapData.Scan0
        Dim byteCount As Integer = bitmapData.Stride * bitmapData.Height
        Dim argb(byteCount - 1) As Byte
        Marshal.Copy(ptr, argb, 0, byteCount)

        For i As Integer = 0 To byteCount - 1 Step 4

            Dim red As Decimal = argb(i + 2)
            Dim green As Decimal = argb(i + 1)
            Dim blue As Decimal = argb(i)
            Dim percentR As Decimal = (red / 255) * 100
            Dim percentG As Decimal = (green / 255) * 100
            Dim percentB As Decimal = (blue / 255) * 100
            Dim aboveThresholdCount As Integer = 0
            If percentR > threshold Then aboveThresholdCount += 1
            If percentG > threshold Then aboveThresholdCount += 1
            If percentB > threshold Then aboveThresholdCount += 1
            ' Label3.Text = aboveThresholdCount.ToString
            If aboveThresholdCount = 3 Then
                red = red * modTimes
                green = green * modTimes
                blue = blue * modTimes
                If red > 255 Then red = 255
                If green > 255 Then green = 255
                If blue > 255 Then blue = 255
            End If
            argb(i + 2) = CByte(Math.Round(red, 0))
            argb(i + 1) = CByte(Math.Round(green, 0))
            argb(i) = CByte(Math.Round(blue, 0))

        Next

        Marshal.Copy(argb, 0, ptr, byteCount)
        bmp.UnlockBits(bitmapData)
        Return bmp

    End Function

Answer:

This example will show the image being modified as the mouse enters and leaves the 'X'.
(example 2 will shrink the image by 50%)
enter image description here
Please try creating a new Visual Basic Winforms app for this example. Please try this example As-Is before modifying!

1.) Create new project
2.) Replace all of Form1's code with this code(only modifying path to image, nothing else)
3.) Click run.
4.) Move mouse into and out of the "X"

Example 1:

Option Strict On
Option Explicit On
Option Infer Off
Public Class Form1
    Private originalPic As Bitmap = Nothing
    Friend WithEvents PictureBox1 As New PictureBox With {.Parent = Me, .Location = New Point(10, 10)}
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'Only modify this line to the location of your "x" image'
        Dim exPath As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "picexample.jpg")
        AddHandler PictureBox1.MouseMove, AddressOf PictureBox1_MouseMove
        If System.IO.File.Exists(exPath) Then
            originalPic = CType(Image.FromFile(exPath), Bitmap)
            PictureBox1.Size = originalPic.Size
            PictureBox1.Image = originalPic
        Else
            Application.Exit()
        End If
    End Sub
    Public Function BrightenPixels(ByVal Image As Bitmap, threshold As Decimal, modTimes As Decimal) As Bitmap
        modTimes = Math.Abs(modTimes)
        If Image Is Nothing Then Return Nothing
        Dim bm As New Bitmap(Image.Width, Image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        Dim g As Graphics = Graphics.FromImage(bm)
        g.DrawImage(Image, New Point(0, 0))
        Dim rect As New Rectangle(New Point(0, 0), bm.Size)
        Dim bitmapData As System.Drawing.Imaging.BitmapData = bm.LockBits(rect, Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        Dim ptr As IntPtr = bitmapData.Scan0
        Dim byteCount As Integer = bitmapData.Stride * bitmapData.Height
        Dim argb(byteCount - 1) As Byte
        System.Runtime.InteropServices.Marshal.Copy(ptr, argb, 0, byteCount)
        For i As Integer = 0 To byteCount - 1 Step 4
            Dim alpha As Decimal = argb(i + 3)
            Dim red As Decimal = argb(i + 2)
            Dim green As Decimal = argb(i + 1)
            Dim blue As Decimal = argb(i)
            Dim percentR As Decimal = (red / 255) * 100
            Dim percentG As Decimal = (green / 255) * 100
            Dim percentB As Decimal = (blue / 255) * 100
            Dim aboveThresholdCount As Integer = 0
            If percentR > threshold Then aboveThresholdCount += 1
            If percentG > threshold Then aboveThresholdCount += 1
            If percentB > threshold Then aboveThresholdCount += 1
            If aboveThresholdCount = 3 Then
                red = red * modTimes
                green = green * modTimes
                blue = blue * modTimes
                If red > 255 Then red = 255
                If green > 255 Then green = 255
                If blue > 255 Then blue = 255
            End If
            argb(i + 2) = CByte(Math.Round(red, 0))
            argb(i + 1) = CByte(Math.Round(green, 0))
            argb(i) = CByte(Math.Round(blue, 0))
        Next
        System.Runtime.InteropServices.Marshal.Copy(argb, 0, ptr, byteCount)
        bm.UnlockBits(bitmapData)
        Return bm
    End Function
    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
        Dim intersectionRect As New Rectangle(13, 18, 22, 21)
        Dim mouseRect As New Rectangle(PictureBox1.PointToClient(MousePosition), New Size(1, 1))
        Me.Text = mouseRect.ToString
        If intersectionRect.IntersectsWith(mouseRect) Then
            Dim tmp As Bitmap = BrightenPixels(originalPic, 33, 1.5D)
            '---------------------Delete this section of code(inbetween lines) to remove circular highlight----------'
            Using g As Graphics = Graphics.FromImage(tmp)
                Using gp As New System.Drawing.Drawing2D.GraphicsPath
                    gp.AddRectangle(intersectionRect)
                    Using pgp As New System.Drawing.Drawing2D.PathGradientBrush(gp)
                        Dim center As New PointF(intersectionRect.Left + (intersectionRect.Width \ 2), intersectionRect.Top + (intersectionRect.Height \ 2))
                        pgp.CenterPoint = center
                        pgp.CenterColor = Color.FromArgb(64, Color.White)
                        pgp.SurroundColors = {Color.FromArgb(0, Color.White), Color.FromArgb(0, Color.White)}
                        g.FillPath(pgp, gp)
                    End Using
                End Using
            End Using
            '-----------------------------------------------------------------------------------------------------------'
            PictureBox1.Image = tmp
        Else
            PictureBox1.Image = originalPic
        End If
    End Sub
End Class

Example 2 (image shrunken by 50%):

enter image description here

Option Strict On
Option Explicit On
Option Infer Off
Public Class Form1
    Private originalPic As Bitmap = Nothing
    Private intersectionPic As Bitmap = Nothing
    Private intersectionRect As New Rectangle(6, 9, 11, 10)
    Friend WithEvents PictureBox1 As New PictureBox With {.Parent = Me, .Location = New Point(10, 10)}
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'Only modify this line to the location of your "x" image'
        Dim exPath As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "picexample.jpg")
        AddHandler PictureBox1.MouseMove, AddressOf PictureBox1_MouseMove
        If System.IO.File.Exists(exPath) Then
            Dim img As Bitmap = CType(Image.FromFile(exPath), Bitmap)
            Dim bm As New Bitmap(img.Width \ 2, img.Height \ 2, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
            Dim g1 As Graphics = Graphics.FromImage(bm)
            Dim cRect As New Rectangle(New Point(0, 0), bm.Size)
            g1.DrawImage(CType(Image.FromFile(exPath), Bitmap), cRect)
            originalPic = bm
            Dim tmp As Bitmap = BrightenPixels(originalPic, 33, 1.5D)
            '---------------------Delete this section of code(inbetween lines) to remove circular highlight----------'
            Using g2 As Graphics = Graphics.FromImage(tmp)
                Using gp As New System.Drawing.Drawing2D.GraphicsPath
                    gp.AddRectangle(intersectionRect)
                    Using pgp As New System.Drawing.Drawing2D.PathGradientBrush(gp)
                        Dim center As New PointF(intersectionRect.Left + (intersectionRect.Width \ 2), intersectionRect.Top + (intersectionRect.Height \ 2))
                        pgp.CenterPoint = center
                        pgp.CenterColor = Color.FromArgb(128, Color.White)
                        pgp.SurroundColors = {Color.FromArgb(0, Color.White), Color.FromArgb(0, Color.White)}
                        g2.FillPath(pgp, gp)
                    End Using
                End Using
            End Using
            '-----------------------------------------------------------------------------------------------------------'
            intersectionPic = tmp
            PictureBox1.Size = originalPic.Size
            PictureBox1.Image = originalPic
        Else
            Application.Exit()
        End If
    End Sub
    Public Function BrightenPixels(ByVal Image As Bitmap, threshold As Decimal, modTimes As Decimal) As Bitmap
        modTimes = Math.Abs(modTimes)
        If Image Is Nothing Then Return Nothing
        Dim bm As New Bitmap(Image.Width, Image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        Dim g As Graphics = Graphics.FromImage(bm)
        g.DrawImage(Image, New Point(0, 0))
        Dim rect As New Rectangle(New Point(0, 0), bm.Size)
        Dim bitmapData As System.Drawing.Imaging.BitmapData = bm.LockBits(rect, Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        Dim ptr As IntPtr = bitmapData.Scan0
        Dim byteCount As Integer = bitmapData.Stride * bitmapData.Height
        Dim argb(byteCount - 1) As Byte
        System.Runtime.InteropServices.Marshal.Copy(ptr, argb, 0, byteCount)
        For i As Integer = 0 To byteCount - 1 Step 4
            Dim alpha As Decimal = argb(i + 3)
            Dim red As Decimal = argb(i + 2)
            Dim green As Decimal = argb(i + 1)
            Dim blue As Decimal = argb(i)
            Dim percentR As Decimal = (red / 255) * 100
            Dim percentG As Decimal = (green / 255) * 100
            Dim percentB As Decimal = (blue / 255) * 100
            Dim aboveThresholdCount As Integer = 0
            If percentR > threshold Then aboveThresholdCount += 1
            If percentG > threshold Then aboveThresholdCount += 1
            If percentB > threshold Then aboveThresholdCount += 1
            If aboveThresholdCount = 3 Then
                red = red * modTimes
                green = green * modTimes
                blue = blue * modTimes
                If red > 255 Then red = 255
                If green > 255 Then green = 255
                If blue > 255 Then blue = 255
            End If
            argb(i + 2) = CByte(Math.Round(red, 0))
            argb(i + 1) = CByte(Math.Round(green, 0))
            argb(i) = CByte(Math.Round(blue, 0))
        Next
        System.Runtime.InteropServices.Marshal.Copy(argb, 0, ptr, byteCount)
        bm.UnlockBits(bitmapData)
        Return bm
    End Function
    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
        Dim mouseRect As New Rectangle(PictureBox1.PointToClient(MousePosition), New Size(1, 1))
        Me.Text = mouseRect.ToString
        If intersectionRect.IntersectsWith(mouseRect) Then
            PictureBox1.Image = intersectionPic
        Else
            PictureBox1.Image = originalPic
        End If
    End Sub
End Class

Related:


Update list of items in c#


c#,linq,list,updates
I would like to know if you can suggest me an efficient way to update a list of items in c#. Here is a generic example: If CurrentList is [ {Id: 154, Name: "George", Salary: 10 000} {Id: 233, Name: "Alice", Salary: 10 000}] And NewList is [ {Id: 154,...

C# PCL HMACSHAX with BouncyCastle-PCL


c#,bouncycastle,portable-class-library
I want to implement this logic in portable C# class: static JsonWebToken() { HashAlgorithms = new Dictionary<JwtHashAlgorithm, Func<byte[], byte[], byte[]>> { { JwtHashAlgorithm.HS256, (key, value) => { using (var sha = new HMACSHA256(key)) { return sha.ComputeHash(value); } } }, { JwtHashAlgorithm.HS384, (key, value) => { using (var sha = new...

How do I provide a collection of elements to a custom attached property?


c#,wpf,binding
I found a few examples online, and a few questions and answers here, but I just can't get it to work. I need a custom attached property that can take one or more target elements. For example... <ListView> <dd:MyDragDrop.DropBorders> <Binding ElementName="brdOne"/> <Binding ElementName="brdTwo"/> <Binding ElementName="brdThree"/> </dd:MyDragDrop.DropBorders> </ListView> I've also had...

Why is the task is not cancelled when I call CancellationTokenSource's Cancel method in async method?


c#,asynchronous,task,cancellationtokensource,cancellation-token
I created a small wrapper around CancellationToken and CancellationTokenSource. The problem I have is that the CancelAsync method of CancellationHelper doesn't work as expected. I'm experiencing the problem with the ItShouldThrowAExceptionButStallsInstead method. To cancel the running task, it calls await coordinator.CancelAsync();, but the task is not cancelled actually and doesn't...

Multiple Threads searching on same folder at same time


c#,multithreading,file-search
Currently I have a .txt file of about 170,000 jpg file names and I read them all into a List (fileNames). I want to search ONE folder (this folder has sub-folders) to check if each file in fileNames exists in this folder and if it does, copy it to a...

C# XML: System.InvalidOperationException


c#,xml
I have been learning C#'s XML with a project however I keep getting the InvalidOperationException. I have put the code below XmlTextWriter writer = new XmlTextWriter(path, System.Text.Encoding.UTF8); writer.WriteStartDocument(true); writer.Formatting = Formatting.Indented; writer.Indentation = 4; writer.WriteStartElement("User Info"); writer.WriteStartElement("Name"); writer.WriteString(userName); writer.WriteEndElement(); writer.WriteStartElement("Tutor Name"); writer.WriteString(tutorName); writer.WriteEndElement();...

C# - Can't connect to remote MySQL server


c#,mysql
My problem is that I can't connect to my website remote MySQL server. I have read all answers in stackoverflow.com, but I can't find right answer. Here's my C# code: using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { SqlConnection...

Regex that allow void fractional part of number


c#,regex
@"[+-]?\d+(\.\d+)?" -this is a regex I have wrote for numbers it allows [+-] minus before the number digits before and digits after the point the question is how to change this to allow "not finished" values so that input of "5." - is fine too ?...

Unconstrained type parameters casting


c#,.net,types,casting
My situation: interface ISomeInterface { void DoSmth<T>(T other); } class Base : ISomeInterface { public virtual void DoSmth<T>(T other){ // for example do nothing } } class Derived<T2> : Base { Action<T2> MyAction {get;set;} public override void DoSmth<T>(T other){ if(typeof(T2).IsAssignableFrom(typeof(T))) MyAction((T2) other); } } This gives me an error: Cannot...

check if file is image


c#,asp.net,asp.net-mvc
I want to check if file is image. and then you will see a link where you can see the image. But the link only has to appear if file is link. I try it like this: if (!String.IsNullOrEmpty(item.FileName)) { var file = item.FileName; string[] formats = new string[] {...

Index was out of range. Must be non-negative or less than size of collection [duplicate]


c#
This question already has an answer here: What is an “index out of range” exception, and how do I fix it? [duplicate] 1 answer Trying to run a delete application in C#. If there is more than 10 files in a directory, delete the oldest file, and iterate again....

Is it possible to concactenate a DataBound value with a constant string in XAML DataBinding?


c#,xaml,windows-phone
To bind a value to a TextBlock we use the following syntax to display an <ItemName> property of a bounded object. <TextBlock Text="{Binding Path=ItemName}" /> But is there a syntax to use the above tag to concatenate the constant string 'Item' with the databounded property, in order display something like:...

Memory consumption when chaining string methods


c#,string,immutability,method-chaining
I know that string in C# is an immutable type. Is it true that when you chain string functions, every function instantiates a new string? If it is true, what is the best practice to do too many manipulations on a string using chaining methods?...

SettingsProvider class - should it be in DAL or BLL project?


c#,data-access-layer,bll
I have in my application layers: Web, DAL and BLL. Where should I place SettingsProvider class (to get values from web.config)? I think it should be inside DAL project. Am I right? public class SettingsProvider : ISettingsProvider { public string UploadImagesPath { get { return ConfigurationManager.AppSettings["UploadImagesPath"]; } } .............. }...

Error when building an XDocument


c#,xml,linq,xpath,linq-to-xml
Using the following example xml containing one duplicate: <Persons> <Person> <PersonID>7506</PersonID> <Forename>K</Forename> <Surname>Seddon</Surname> <ChosenName /> <MiddleName /> <LegalSurname /> <Gender>Male</Gender> </Person> <Person> <PersonID>6914</PersonID> <Forename>Clark</Forename> <Surname>Kent</Surname> <ChosenName>Clark</ChosenName> <MiddleName />...

Visual Studio Assembly force-installs Target Framework


c#,.net,visual-studio-2013,.net-framework-version
I have this Assembly targeted at .NET 3.5. The code will work on later versions as well, but I like this to work on Windows XP. I mean, .NET is backwards compatible, right? I can run apps for .NET 3.5 on Windows 8.1. However, when I run my own assembly,...

How to declare var datatype in public scope in c#?


c#,linq
I write simple query with linq to sql : var query = (from p in behzad.GAPERTitles select new { p.id, p.gaptitle }).ToArray(); up code into the c# windows application ,windows form load event,and i want use up result into the button click event in this scope: private void button1_Click(object sender,...

Load XML to list using LINQ [duplicate]


c#,xml,linq
This question already has an answer here: XDocument to List of object 1 answer I have following XML: <?xml version="1.0" encoding="utf-8"?> <start> <Current CurrentID="5"> <GeoLocations> <GeoLocation id="1" x="78492.61" y="-80973.03" z="-4403.297"/> <GeoLocation id="2" x="78323.57" y="-81994.98" z="-4385.707"/> <GeoLocation id="3" x="78250.57" y="-81994.98" z="-4385.707"/> </GeoLocations> <Vendors> <Vendor id = "1" x="123456" y="456789" z="0234324"/>...

Export data from table in Pervasive


c#,pervasive
I want to export data from table programatically. And i wonder if it's even possible? The picture is from Pervasive, that the db-server I'm using. Please assist! :) ...

How to Customize Visual Studio Setup


c#,visual-studio,setup-project
I have created a video chat application in c#. Now I wan to make a setup of it. I have created a setup using Visual studio's setup project but my client told me to customize the setup progress bar styles and other properties. i dont know how to do it....

Foreign key in C#


c#,sql,sql-server,database
I have two tables, A and B, in a dataset in SQL Server; I have created a connection to the dataset in a c# project in visual studio. How can I create a foreign key ( A is the parent) between my two tables ? I want to create the...

Difference between application and module pipelines in Nancy?


c#,asp.net,nancy
I have seen in the documentation of Nancy, sometimes these two are referred distinctively. And also is there a difference in the Before/After hooks of these two pipelines?...

How can I determine if an object of anonymous type is empty?


c#,.net
I am sure the answer to this is quite simple but I am trying to write an if statement (C# 5.0) to determine whether or not an anonymous type is empty or not. Here is a simplified version of my code: public void DoSomething(object attributes) { // This is the...

Get object by attribute value [duplicate]


c#,reflection,custom-attributes,spring.net
This question already has an answer here: How enumerate all classes with custom class attribute? 4 answers I have a set of classes which implement a common interface and are annotated with a business domain attribute. By design, each class is annotated with different parametrization [Foo(Bar=1)] public class EntityA...

how can I add a column to IQueryable object and modify its values


c#,.net,linq,grid,devexpress
var packs = from r in new XPQuery<Roll>(session) select new { Number = r.number Selection = new bool() }; gcPack.DataSource = packs; I want to add another column to my grid control with: Selection = new bool(). It will be added to the grid but I can't change its...

Access manager information from Active Directory


c#,asp.net,active-directory
Attach is the picture of active directory, which i got from my IT department. Now i want to get the manager information in C#. NOTE: I am able to get all information of user but there isn't any key of manager, but IT department just gave me above attached...

MvcSiteMapProvider - Enhanced bootstrap dropdown menu


c#,twitter-bootstrap,asp.net-mvc-5,mvcsitemapprovider,mvcsitemap
I'm trying to build a menu like this: For reference I'm using this library https://github.com/behigh/bootstrap_dropdowns_enhancement @Html.MvcSiteMap().Menu("BootstrapMenuHelperModel") @model MenuHelperModel <nav class="navbar" role="navigation"> <div class="container-fluid menu-container"> <div class="collapse navbar-collapse"> <div class="navbar-header"> <span class="navbar-brand">FAR BACKOFFICE</span> </div> <ul class="nav nav-pills"> @foreach (var node in Model.Nodes) { if...

Convert contents of an XmlNodeList to a new XmlDocument without looping


c#,xml,xpath,xmldocument,xmlnodelist
I have Xml that I filter using XPath (a query similar to this): XmlNodeList allItems = xDoc.SelectNodes("//Person[not(PersonID = following::Person/PersonID)]"); This filters all duplicates from my original Persons Xml. I want to create a new XmlDocument instance from the XmlNodeList generated above. At the minute, the only way I can see...

Validate a field only if it is populated


c#,wpf,idataerrorinfo
I am having a problem with validating phone numbers. In our system we have two phone numbers which you can store. The problem I am having is that these are optional fields. So I want it to validate the phone number IF and only IF the user has tried to...

while Inherit style in WPF it affect parent style


c#,xaml,styles,wpf-controls
In WPF i have a style for the control like below, <Style TargetType="local:CustomControl"> <Setter Property="Background" Value="Transparent" /> <Setter Property="BorderBrush" Value="Gray" /> <Setter Property="BorderThickness" Value="0,0,0,1" /> <Setter Property="Padding" Value="3,0,3,0" /> <Setter Property="IsTabStop" Value="False" /> <Setter Property="VerticalContentAlignment" Value="Center" /> </Style> Now i need to override customcontrol border for some other place like...

System.net.http.formatting causing issues with Newtonsoft.json


c#,asp.net,asp.net-mvc,json.net
My Windows service is in the same solution as a MVC project. The MVC project uses a reference to SignalR Client which requires Newtonsoft.Json v6 + the Windows service uses System.Net.Http.Formatting, which requires Newtonsoft.Json version 4.5.0.0. I assumed this would not be a problem, as I could just use a...

Catch concurrency exception in EF6 to change message to be more user friendly


c#,asp.net,.net,entity-framework,entity-framework-6
I am using EF6.1 and i would like to change the message to a more system specific message when the below exception is thrown. Store update, insert, or delete statement affected an unexpected number of rows (0) Now, my problem is i cannot seem to catch the exception? I have...

Convert Date Time to IST


c#
I want to convert the date time to "Indian Standard Time", so i used the following code :- public static TimeZoneInfo INDIAN_ZONE = TimeZoneInfo.FindSystemTimeZoneById("Indian Standard Time"); writer.WriteLine("{0} {1}", indianTime.ToLongTimeString(), indianTime.ToLongDateString()); The above code gives me error :- System.TimeZoneNotFoundException: The time zone ID 'Indian Standard Time' was not found on the...

SQL Server / C# : Filter for System.Date - results only entries at 00:00:00


c#,asp.net,sql-server,date,gridview-sorting
I have a connected SQL Server database in Visual Studio and am displaying its content in a grid. I created a dropdown menu with the column names as selectable options and a text field to filter for specific content, e.g., DropDown = "Start" - Textfield = 14.03.2015 = Filter Column...

C# Code design / Seperate classes for each TabControl


c#,oop,architecture,software-design,code-design
My main problem is that my tool grows and grows and I start loosing the focus on the different parts of my code. The main-Form got a docked tabControl at fullsize. I got 5 different tabs with for really different functions. So I can say my tool is splitted into...

How to return result while applying Command query separation (CQS)


c#,design-patterns,cqrs,command-query-separation
I am separating my query and command on service side like this: public class ProductCommandService{ void AddProduct(Product product); } public interface ProductQueryService{ Product GetProduct(Guid id); Product[] GetAllProducts(); } Command Query Separation accepts that a method should change state or return a result. There is no problem. public class ProductController: ApiController{...

Marshal struct in struct from c# to c++


c#,c++,marshalling
I have the following structures in C# and C++. C++: struct TestA { char* iu; }; struct TestB { int cycle1; int cycle2; }; struct MainStruct { TestA test; TestB test2; }; C#: [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack = 1)] internal struct TestA { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)] private string iu; public...

How to send Ctrl+S through SendKeys.Send() method to save a file(save as dialog)


c#,.net,windows,sendkeys
I need to save a file which is in an External application using SendKeys.Send() method. The keys needed to be sent are Ctrl+S. I wrote the below code, but its not working: SendKeys.SendWait("^%s?"); // to get the Save As dialog Thread.Sleep(5000); SetForegroundWindow(FindWindow(null, "Save As")); Thread.Sleep(5000); SendKeys.SendWait("xyz"); // Sending FileName ...

Regex to remove `.` from a sub-string enclosed in square brackets


c#,.net,regex,string,replace
I have this regex in C#: \[.+?\] This regex extracts the sub-strings enclosed between square brackets. But before doing that I want to remove . inside these sub-strings. For example, the string hello,[how are yo.u?]There are [300.2] billion stars in [Milkyw.?ay]. should become hello,[how are you?]There are [3002] billion stars...

Collect strings after a foreach loop


c#,xml,foreach
Is it possible to collect the strings after a foreach loop? For example: StringCollection col = new StringCollection(); XmlNodeList skillNameNodeList=SkillXML.GetElementsByTagName("name"); foreach (XmlNode skillNameNode in skillNameNodeList) { skillsName=skillNameNode.Attributes["value"].Value; } col.Add(skillsName); //Return System.Collections.Specialized.StringCollection I want to collect each skillsName and put them in a collection or a list so that I can...

deployment of a site asp.net and iis


c#,asp.net,iis
I know this is for some of you a stupid question but for me is a real problem. I have never deployed a site before What i have done so far: 1) publish the site from visual studio to a folder. 2) added to iis for testing everything works great...

Aligning StackPanel to top-center in Canvas


c#,wpf,xaml,canvas
I'm trying to create an application which is supposed to measure quick reaction performance of it's user. The application starts up in full-screen mode and resizes it's elements accordingly to the screen resolution. The project was strongly inspired by training_aim_csgo2 map. It's mostly done, but here is the problem: I...