У овом удружењу за програмирање Ц # усредсредит ћу се на напредне контроле као што су ЦомбоБокес, Гридс и ЛистВиевс и приказати вам начин на који ћете их највероватније користити. Не дирам податке и увезујем све до каснијег водича. Кренимо од једноставне контроле, ЦомбоБок-а.
У срцу Цомбо-а је колекција предмета, а најједноставнији начин да се ово попуни је испуштање комбинације на екран, одабир својстава (ако не можете да видите прозоре својстава, кликните на горњи мени, а затим дугме Својства), пронађите ставке и кликните на елипсе дугме. Затим можете уписати жице, саставити програм и повући комбинацију доле да бисте видели изборе.
Сада зауставите програм и додајте још неколико бројева: четири, пет.. до десет. Када га покренете видећете само 8 јер је то подразумевана вредност МакДропДовнИтемс. Слободно га поставите на 20 или 3, а затим га покрените да бисте видели шта ради.
Иритантно је да када се отвори, пише цомбоБок1 и можете је уредити. То није оно што желимо. Пронађите својство ДропДовнСтиле и промените ДропДовн у ДропДовнЛист. (То је комбинација!). Сада нема текста и не може се уређивати. Можете одабрати један од бројева, али увек се отвара празно. Како да одаберемо број за почетак? Па то није својство које можете подесити у време дизајна, али додавање ове линије ће то учинити.
Додајте тај ред у конструктор Форм1 (). Морате да видите код за образац (у програму Солутион Екплорер кликните десним тастером миша на Фром1.цс и кликните на Виев Цоде. Пронађите ИнитиализеЦомпонент (); и додајте ту линију одмах након овога.
Ако поставите својство ДропДовнСтиле за комбинацију на Једноставно и покренете програм, нећете добити ништа. Неће одабрати или кликнути или одговорити. Зашто? Јер у време пројектовања морате хватати ручицу за доњи растезање и целу контролу учинити вишом.
У примеру 2, преименовао сам ЦомбоБок у цомбо, променио Цомбо ДропДовнСтиле назад у ДропДовн како би могао да се уређује и додао дугме Адд који се зове бтнАдд. Двоструко сам кликнуо дугме за додавање да бих створио догађај за обраду догађаја бтнАдд_Цлицк () и додао ову линију догађаја.
Сада када покренете програм, унесите нови број, реците Елевен и кликните додај. Руковалац догађаја узима текст који сте унели (у комбинацији). Текст) и додаје га у колекцију предмета Цомбо. Кликните на Цомбо и сада имамо нови унос Елевен. Тако додајете нови низ комбинованом низу. Да бисте уклонили један је мало сложеније јер морате пронаћи индекс низа који желите да уклоните и уклоните га. Метода РемовеАт приказана испод је метода прикупљања да бисте то учинили. само морате навести који елемент у параметру Ремовеиндек.
ће уклонити низ на положају РемовеИндек. Ако у комбинацији постоји н ставки, тада су важеће вредности од 0 до н-1. За 10 предмета, вредности 0..9.
Ако овај текст не нађе, враћа се -1, у супротном враћа индекс низа на бази 0 на комбо листи. Постоји и преоптерећена метода ФиндСтрингЕкацт која вам омогућава да одредите одакле покрећете претрагу, тако да можете прескочити прву итд. Ако имате дупликате. Ово би могло бити корисно за уклањање дупликата са листе.
Кликом на бтнАддМани_Цлицк () брише се текст из комбинације, а затим се брише садржај збирке комбинованих предмета, а затим се зове комбо. АддРанге (да бисте додали низове из низа вредности. Након што то учини, постави композитни СелецтедИндек на 0. Ово показује први елемент у комбинацији. Ако радите додавање или брисање ставки у ЦомбоБок-у, онда је најбоље да пратите који је предмет изабран. Ако поставите СелецтедИндек на -1, сакривају изабране ставке.
Дугме Адд Лотс брише листу и додаје 10 000 бројева. Додао сам комбинацију. БегинУпдате () и комбинирано, ЕндУпдате () позива око петље да би се спречило било какво треперење од Виндовса који покушава ажурирати контролу. На мом трогодишњем ПЦ-у потребно је нешто више од секунде да у комбо додате 100.000 бројева.
Ово је згодна контрола за приказивање табеларних података без сложености мреже. Ставке можете приказати као велике или мале иконе, као листу икона на вертикалној листи или најкорисније као листу ставки и подтеме у мрежи и то ћемо радити овде.
Након што испустите ЛистВиев на обрасцу, кликните својство ступаца и додајте 4 колоне. То ће бити ТовнНаме, Кс, И и Поп. Подесите текст за сваки ЦолумнХеадер. Ако не можете да видите наслове на ЛистВиев (након што сте додали свих 4), поставите својство ВиевВиев ЛистВиев на Детаљи. Ако прегледате код за овај пример, дођите до места где пише Виндовс Десигнер Цоде и проширите регију на којој ћете видети код који ствара ЛистВиев. Корисно је видети како систем функционише и можете да копирате овај код и сами га користите.
Ширину за сваки ступац можете подесити ручно померањем курсора преко заглавља и повлачењем. Или то можете учинити у коду видљивом након што сте проширили регију дизајнерског обрасца. Требали бисте видети код овако:
У колони популације, промене кода одражавају се у дизајнеру и обрнуто. Имајте на уму да чак и ако поставите својство Лоцкед на труе, то утиче само на дизајнера и током извођења можете промијенити величину ступаца.
ЛистВиевс такође долази са бројним динамичким својствима. Кликните на (Динамиц Пропертиес) и означите жељену некретнину. Када поставите својство да буде динамично, ствара КСМЛ .цонфиг датотеку и додаје је у Солутион Екплорер.
Уношење промена у време дизајна је једна ствар, али то заиста морамо да урадимо када се програм покреће. ЛистВиев се састоји од 0 или више ставки. Свака ставка (ЛистВиевИтем) има својство текста и колекцију СубИтемс. Први ступац приказује текст предмета, а следећи ступац приказује СубИтем [0] .тект, затим СубИтем [1] .тект и тако даље.
Додао сам дугме за додавање реда и оквир за уређивање имена града. Унесите било које име у поље и кликните на Додај ред. Овим се додаје Листу ВиевВиев са називом града наведеним у првој колони и следећој три колоне (СубИтеми [0..2]) попуњавају се случајним бројевима (претварају се у жице) додавањем тих низова у њих.
Сада поставите својство ЛистВиев Мултиселецт на фалсе. Желимо да одаберемо само једну ставку у исто време, иако желите да уклоните више одједном, слично је, осим што ћете морати да се обрнете обрнуто. (Ако петите у нормалном редоследу и обришете ставке, тада се следеће ставке не синхронизују са одабраним индексима).
Мени са десним кликом још увек не раде јер на њему немамо ставке које би се могле приказати. Тако кликните десним тастером миша ПопупМену (испод обрасца) и видећете Контекстни мени на врху обрасца где се појављује уобичајени уређивач менија. Кликните и на месту где пише Упишите овде, откуцајте ставку. Прозор с својствима ће приказати МенуИтем па преименовати тај у мниРемове. Двокликните ову ставку менија и требало би да добијете функцију кодова за обраду догађаја МенуИтем1_Цлицк. Додајте овај код тако да изгледа овако.
Ако изгубите из вида Уклони предмет, само кликните ПопупМену контролу под обрасцем у обрасцу Дизајнер. То ће га вратити у обзир.
Међутим, ако га покренете и не додате ставку и не одаберете је, када десним тастером миша кликнете и добијете мени и кликнете Избриши ставку, то ће дати изузетак јер не постоји ниједна изабрана ставка. То је лоше програмирање, па ево како ћете то поправити. Двапут кликните скочни догађај и додајте ову линију кода.
ДатаГридВиев је и најсложенија и најкориснија компонента која се бесплатно нуди са Ц #. Ради са изворима података (тј. Подацима из базе података) и без (тј. Подацима које програмско додајете). За остатак овог водича приказаћу га користећи без извора података. За једноставније потребе приказа можда ћете наћи обичан ЛистВиев погоднији.
Ако сте користили старију ДатаГрид контролу, ово је само један од оних на стероидима: омогућава вам више уграђених типова колона, може радити са унутрашњи и спољашњи подаци, више прилагођавања приказа (и догађаја) и даје већу контролу над руковањем ћелијама са замрзавајућим редовима и колона.
Када дизајнирате обрасце са мрежним подацима, најчешће је навести различите врсте ступаца. Можда имате поља за потврду у једној колони, само за читање или уређивање текста у другој и бројеве курсева. Ове врсте ступаца се такође обично различито поравнавају са бројевима који су углавном поравнати десно, тако да се децимална места постављају према горе. На нивоу колона можете да изаберете између дугмета, потврдног оквира, ЦомбоБок-а, слике, ТектБока и линкова. ако вам то није довољно можете оскврнути сопствене прилагођене типове.
Најлакши начин за додавање ступаца је дизајнирањем у ИДЕ-у. Као што смо видели пре, ово пише код за вас и када то учините неколико пута, можда бисте радије додали код сами. Након што то учините неколико пута, пружа вам увид у то како то програмско урадити.
Започнимо додавањем неких колона, испустите ДатаГридВиев на образац и кликните малу стрелицу у горњем десном углу. Затим кликните на Додај колону. Уради то три пута. Појавит ће се дијалог Адд Цолумн у којем сте поставили назив колоне, текст који ће се приказати на врху колоне и омогућава вам да одаберете његову врсту. Прва колона је ИоурНаме и то је задани ТектБок (датаГридВиевТектБокЦолумн). Подесите текст заглавља и на своје име. Направите другу колону Аге и користите ЦомбоБок. Трећа колона је дозвољена и колона је ЦхецкБок.
Након додавања сва три требало би да видите ред од три ступца са комбинацијом у средини (Доб) и потврдним оквиром у колони Дозвољено. Ако кликнете ДатаГридВиев, тада у инспектору својстава пронађите ступце и кликните (цоллецтион). Отвара се дијалог у којем можете поставити својства за сваки ступац, као што су појединачне боје ћелије, текст алата, ширина, минимална ширина итд. Ако компајлирате и покренете приметићете да можете променити ширину колоне и време извођења. У инспектору својстава за главни ДатаГридВиев можете поставити АлловУсер да промијени величину Цолумн у фалсе да то спријечи.
Додаћемо редове у контролу ДатаГридВиев у коду, а ек3.цс у датотеци примера има овај код. Започињући додавањем ТектЕдит оквира, ЦомбоБок-а и дугмета у образац са ДатаГридВиев на њему. Подесите својство ДатаГридВиев АлловУсерто АддРовс на фалсе. Користим и налепнице и назвао сам комбобок цбАгес, дугме бтнАддРов и ТектБок тбНаме. Такође сам додао образац за затварање и двапут га кликнуо да би створио костур за обраду догађаја бтнЦлосе_Цлицк. Ако додате реч Цлосе (), то и делује.
Подразумевано је својство омогућено гумбом Додај ред да се постави лажно. Не желимо да додамо ниједне редове у ДатаГридВиев осим ако у пољу Наме ТектЕдит и ЦомбоБок не постоји Тект. Направио сам метод ЦхецкАддБуттон, а затим генерирао алат за обраду догађаја Леаве за поље за уређивање Наме Тект Тект двоструким кликом поред речи Леаве ин Пропертиес када је приказивао догађаје. Оквир Својства ово приказује на горњој слици. Подразумевано је у пољу Својства приказана својства, али можете видети обрађиваче догађаја кликом на дугме стреле.
Можете уместо тога користити текст ТектЦхангед, мада ће ово позвати ЦхецкАддБуттон () метода за свако притискање тастера, а не када се препусти контрола, тј. када се добије друга контрола фокус. На Агес Цомбо користио сам ТектЦхангед догађај, али сам изабрао обрађивач догађаја тбНаме_Леаве уместо да двапут кликнем да бих створио нови руковатељ догађаја.
Нису сви догађаји компатибилни јер неки догађаји дају додатне параметре, али ако можете видети претходно генерисани руковатељ, да, можете га користити. То је углавном ствар склоности, можете имати засебан програм за обраду догађаја за сваку контролу кориштење или дијељење обрађивача догађаја (као што сам то учинио) када имају заједнички потпис догађаја, тј. параметри су исти.
Преименовао сам компоненту ДатаГридВиев у дГВиев ради сажетости и двапут кликнуо на АддРов да бих створио костур за обраду догађаја. Овај код испод додаје нови празан ред, добија индекс редова (то је РовЦоунт-1 као што је управо додан и РовЦоунт је 0 а затим приступи том ретку преко свог индекса и поставља вредности у ћелијама у том ретку за ступце ИоурНаме и Старост
Приликом дизајнирања обрасца требало би размислити у смислу контејнера и контрола и које групе контрола треба држати заједно. У западним културама ионако људи читају од горе леве до доње десне, тако да је лакше читати на тај начин.
Контејнер је било која од контрола која може садржавати и друге контроле. Они који се налазе у Тоолбок-у укључују Панел, ФловЛаиоутпанел, СплитЦонтаинер, ТабЦонтрол и ТаблеЛаиоутПанел. Ако не можете да видите оквир са алаткама, користите мени Виев и пронаћи ћете га. Контејнери држе контроле заједно и ако померите или промените величину спремника, то ће утицати на позиционирање контрола. Само премјестите контроле над спремником у Обликовачу обрасца и он ће препознати да је Контејнер сада главни.
Панел је сличан ГроупБок-у, али ГроупБок се не може померати, али може приказати наслов и подразумевано има обруб. Плоче могу имати обрубе, али подразумевано не. Користим ГроупБоке зато што изгледају лепше и ово је важно јер:
Плоче су корисне и за груписање контејнера, тако да на плочи можете имати два или више ГроупБок-а.
Ево савета за рад са контејнерима. На форму баците сплит контејнер. Кликните леви панел а затим десни. Сада покушајте и уклоните СплитЦонтаинер из обрасца. То је тешко док не кликнете десним гумбом на један од панела, а затим изаберете Селецт СплитЦонтаинер1. Када је све одабрано, можете да га обришете. Други начин који се односи на све контроле и контејнере је притисните тастер Есц за одабир родитеља.
Контејнери се такође могу угнијездити један у другог. Само повуците малу на већој и видећете да се накратко појављује танка вертикална линија која показује да је једна сада унутар друге. Када повучете родитељски контејнер, дете се премешта са њим. Пример 5 то показује. Подмерено светло смеђа плоча није унутар контејнера, па када кликнете тастер за померање, ГроупБок је померен, али панел није. Сада превуците панел преко ГроупБок-а тако да је у потпуности унутар Гроупбок-а. Када овај пут компилирате и покренете, кликом на дугме Мове померите се заједно.
ТаблеЛаиоутпанел је занимљив контејнер. То је структура таблице која је организована попут 2Д мреже ћелија где свака ћелија садржи само једну контролу. Не можете имати више контрола у ћелији. Можете одредити како табела расте када се дода више контрола или чак и ако не расте, чини се по узору на ХТМЛ табелу јер ћелије могу да обухватају ступце или редове. Чак и понашање сидрења дечјих контрола у контејнеру зависи од подешавања маргине и паддинга. На сидришту ћемо видети више о сидрима.
На пример Ек6.цс, започео сам са основном таблицом са две колоне и одредио преко дијалога за контролу и стилове реда (изаберите контролу и кликните мало десни троугао који се налази у горњем десном углу да бисте видели списак задатака и кликните на последњи) да је леви ступац 40%, а десни 60% од ширина. Омогућава вам да одредите ширину ступаца у апсолутном пикселу, у процентима, или можете једноставно да јој дозволите АутоСизе Бржи начин да дођете до овог дијалога је само да кликнете на Збирку поред Ступаца у прозору Својства.
Додао сам АддРов дугме и оставио својство ГровСтиле са заданом АддРовс вредношћу. Када се таблица напуни, додаје се још један ред. Алтернативно, његове вредности можете подесити на АддЦолумн и ФикедСизе тако да више не могу расти. У програму Ек6 када кликнете дугме Додај контроле, три пута позове методу АддЛабел () и једанпут АддЦхецкБок (). Свака метода ствара инстанцу контроле, а затим позива тблПанел. Контроле. Адд () Након додавања друге контроле трећа контрола узрокује раст табеле. На слици је приказана након што је једном притиснуто дугме Додај контролу.
У случају да се питате одакле потичу задане вредности у методама АддЦхецкбок () и АддЛабел () које ја зовем, контрола је била првобитно ручно додато у табелу у дизајнеру, а затим је код за креирање и иницијализацију био копиран из овог регион. Иницијални код ћете пронаћи у позиву методе ИнитиализеЦомпонент након што кликнете + са леве стране региона испод:
Можете одабрати више контрола истовремено притиском на тастер схифт када одаберете другу и следеће контроле, чак и контроле различитих врста. Прозор Својства приказује само она својства која су заједничка за обе, тако да их можете поставити на исту величину, боју и текстуална поља итд. Чак се исти руководиоци догађаја могу доделити вишеструким контролама.
Овисно о употреби, корисник ће често промијенити величину неких образаца. Ништа не изгледа горе него променити величину обрасца и видети како контроле остају у истом положају. Све команде имају сидра која вам омогућавају да их „причврстите“ за 4 ивице како би се команда померала или истезала када се помера ивица. Ово доводи до следећег понашања када се образац истегне са десне ивице:
За дугмад попут Затвори који су традиционално у доњем десном углу, понашање 3 је оно што је потребно. ЛистВиевс и ДатаГридВиевс су најбољи са 2 ако је број ступаца довољан да се препуни образац и треба да се крећете). Горња и лева сидра су задана. Прозор имовине садржи сјајни уредник који наликује енглеској застави. Само кликните било коју од шипки (две хоризонталне и две вертикалне) да бисте поставили или очистили одговарајуће сидро, као што је приказано на горњој слици.
Једно својство које се не спомиње пуно је својство Таг, а ипак може бити невероватно корисно. У прозору Својства можете доделити само текст, али у вашем коду можете имати било коју вредност која потиче од Објекта.
Користила сам Таг да држим цео објекат док сам у ЛистВиеву показивала само неколико његових својстава. На пример, можда ћете желети само да прикажете корисничко име и број на листи корисничких прегледа. Али десним кликом на одабраног купца, а затим отворите образац са свим детаљима купца. То је лако ако приликом састављања листе купаца читате све детаље о клијенту у меморији и доделите референцу на објект класе корисника у ознаци. Све контроле имају ознаку.
ТабЦонтрол је згодан начин за уштеду простора обрасца помоћу више језичака. Свака картица може имати икону или текст, а ви можете одабрати било коју картицу и приказати њене контроле. ТабЦонтрол је контејнер, али садржи само ТабПагес. Свака ТабПаге је такође контејнер који јој може додати нормалне контроле.
На пример к7.цс, створио сам страницу са две картице са првом картицом која се зове Контроле са три дугмета и потврдним оквиром на себи. Друга страница на картици је означена као Дневници и користи се за приказивање свих евидентираних радњи које укључују кликом на дугме или пребацивање потврдног оквира. Метода звана Лог () позива се да се евидентира сваки клик дугмета итд. Додаје низ у ЛистБок.
Такође сам на уобичајени начин додао ТабЦонтрол две ставке скочних менија десним кликом. Прво додајте ЦонтектМенуСтрип у форму и поставите га у ЦонтектСтрипМену својство ТабЦонтрол. Избира два менија су Додавање нове странице и Уклони ову страницу. Међутим, ограничење уклањања странице ограничио сам тако да могу да се уклоне само ново додате странице са картицама, а не и оригиналне две.
Ово је једноставно, само направите нову картицу, дајте јој текстуални опис за картицу, а затим је додајте у колекцију ТабПагес Табс ТабЦонтрол
Уклањање странице само је питање позива ТабПагес-а. РемовеАт (), помоћу картица. СелецтедИндек да бисте добили тренутно одабрану картицу.
У овом туториалу смо видели како раде неке од софистициранијих контрола и како их користити. У следећем упутству ћу наставити са темом ГУИ-ја и погледати позадину радника у позадини и показати како се користи.